• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /*
2   * Copyright (c) 2021 Huawei Device Co., Ltd.
3   * Licensed under the Apache License, Version 2.0 (the "License");
4   * you may not use this file except in compliance with the License.
5   * You may obtain a copy of the License at
6   *
7   *     http://www.apache.org/licenses/LICENSE-2.0
8   *
9   * Unless required by applicable law or agreed to in writing, software
10   * distributed under the License is distributed on an "AS IS" BASIS,
11   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12   * See the License for the specific language governing permissions and
13   * limitations under the License.
14   */
15  
16  #include "command_test.h"
17  
18  using namespace testing::ext;
19  using namespace std;
20  using namespace OHOS::HiviewDFX;
21  namespace OHOS {
22  namespace Developtools {
23  namespace HiPerf {
24  const std::string TEST_CMD_TRUE = "TEST_CMD_TRUE";
25  const std::string TEST_CMD_FALSE = "TEST_CMD_FALSE";
26  const std::string TEST_OPTION_TRUE = "-TEST_OPTION_TRUE";
27  const std::string TEST_OPTION_FALSE = "-TEST_OPTION_FALSE";
28  
29  class CommandTest : public testing::Test {
30  public:
31      static void SetUpTestCase(void);
32      static void TearDownTestCase(void);
33      void SetUp();
34      void TearDown();
35  
36  private:
37      std::unique_ptr<MockSubCommand> subCommandAlwaysTure =
38          std::make_unique<MockSubCommand>(TEST_CMD_TRUE);
39      std::unique_ptr<MockSubCommand> subCommandAlwaysFalse =
40          std::make_unique<MockSubCommand>(TEST_CMD_FALSE);
41  };
42  
SetUpTestCase()43  void CommandTest::SetUpTestCase() {}
44  
TearDownTestCase()45  void CommandTest::TearDownTestCase() {}
46  
SetUp()47  void CommandTest::SetUp()
48  {
49      ASSERT_EQ(Option::RegisterMainOption(TEST_OPTION_TRUE, TEST_OPTION_HELP, OptionAlwaysTrue),
50                true);
51      ASSERT_EQ(Option::RegisterMainOption(TEST_OPTION_FALSE, TEST_OPTION_HELP, OptionAlwaysFalse),
52                true);
53  
54      EXPECT_CALL(*subCommandAlwaysTure, OnSubCommand(_)).WillRepeatedly(Return(true));
55      EXPECT_CALL(*subCommandAlwaysFalse, OnSubCommand(_)).WillRepeatedly(Return(false));
56  
57      ASSERT_TRUE(SubCommand::RegisterSubCommand(subCommandAlwaysTure.get()->Name(),
58                                                 std::move(subCommandAlwaysTure)));
59      ASSERT_TRUE(SubCommand::RegisterSubCommand(subCommandAlwaysFalse.get()->Name(),
60                                                 std::move(subCommandAlwaysFalse)));
61  }
62  
TearDown()63  void CommandTest::TearDown()
64  {
65      SubCommand::ClearSubCommands();
66      Option::ClearMainOptions();
67  }
68  
69  /**
70   * @tc.name: TestCommandDistribution
71   * @tc.desc:
72   * @tc.type: FUNC
73   */
74  HWTEST_F(CommandTest, TestCommandDistribution, TestSize.Level1)
75  {
76      std::string args;
77  
78      args = TEST_OPTION_TRUE + " " + TEST_OPTION_TRUE + " " + TEST_OPTION_TRUE;
79      EXPECT_EQ(Command::DispatchCommand(args), false);
80  
81      args = TEST_OPTION_TRUE + " " + TEST_OPTION_TRUE + " " + TEST_CMD_TRUE;
82      EXPECT_EQ(Command::DispatchCommand(args), true);
83  
84      args = TEST_OPTION_TRUE + " " + TEST_CMD_TRUE + " " + TEST_OPTION_TRUE;
85      EXPECT_EQ(Command::DispatchCommand(args), true);
86  
87      args = TEST_CMD_TRUE + " " + TEST_OPTION_TRUE + " " + TEST_OPTION_TRUE;
88      EXPECT_EQ(Command::DispatchCommand(args), true);
89  
90      args = TEST_CMD_TRUE + " " + TEST_CMD_TRUE + " " + TEST_CMD_TRUE;
91      EXPECT_EQ(Command::DispatchCommand(args), true);
92  
93      args = TEST_NOREG_CMD + " " + TEST_CMD_TRUE + " " + TEST_CMD_TRUE;
94      EXPECT_EQ(Command::DispatchCommand(args), false);
95  
96      args = TEST_NO_OPTION_CMD + " " + TEST_CMD_TRUE + " " + TEST_CMD_TRUE;
97      EXPECT_EQ(Command::DispatchCommand(args), false);
98  
99      args = TEST_CMD_TRUE + " " + TEST_NOREG_CMD + " " + TEST_CMD_TRUE;
100      EXPECT_EQ(Command::DispatchCommand(args), true);
101  
102      args = TEST_OPTION_FALSE + " " + TEST_CMD_TRUE + " " + TEST_CMD_TRUE;
103      EXPECT_EQ(Command::DispatchCommand(args), false);
104  
105      args = TEST_OPTION_TRUE + " " + TEST_CMD_FALSE + " " + TEST_CMD_TRUE;
106      EXPECT_EQ(Command::DispatchCommand(args), false);
107  }
108  } // namespace HiPerf
109  } // namespace Developtools
110  } // namespace OHOS
111