148f512ceSopenharmony_ci/*
248f512ceSopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
348f512ceSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
448f512ceSopenharmony_ci * you may not use this file except in compliance with the License.
548f512ceSopenharmony_ci * You may obtain a copy of the License at
648f512ceSopenharmony_ci *
748f512ceSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
848f512ceSopenharmony_ci *
948f512ceSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1048f512ceSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1148f512ceSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1248f512ceSopenharmony_ci * See the License for the specific language governing permissions and
1348f512ceSopenharmony_ci * limitations under the License.
1448f512ceSopenharmony_ci */
1548f512ceSopenharmony_ci
1648f512ceSopenharmony_ci#ifndef HIPERF_SUBCOMMAND_TEST_H
1748f512ceSopenharmony_ci#define HIPERF_SUBCOMMAND_TEST_H
1848f512ceSopenharmony_ci
1948f512ceSopenharmony_ci#include <gmock/gmock.h>
2048f512ceSopenharmony_ci#include <gtest/gtest.h>
2148f512ceSopenharmony_ci
2248f512ceSopenharmony_ci#include "subcommand.h"
2348f512ceSopenharmony_cinamespace OHOS {
2448f512ceSopenharmony_cinamespace Developtools {
2548f512ceSopenharmony_cinamespace HiPerf {
2648f512ceSopenharmony_cistatic std::string TEST_CMD_1 = "TEST_CMD_1";
2748f512ceSopenharmony_cistatic std::string TEST_CMD_2 = "TEST_CMD_2";
2848f512ceSopenharmony_cistatic std::string TEST_CMD_3 = "TEST_CMD_3";
2948f512ceSopenharmony_cistatic std::string TEST_NOREG_CMD = "TEST_NOREG_CMD";
3048f512ceSopenharmony_cistatic std::string TEST_BRIEF = " TEST_BRIEF\n";
3148f512ceSopenharmony_cistatic std::string TEST_HELP = " TEST_HELP\n";
3248f512ceSopenharmony_ci
3348f512ceSopenharmony_cistatic const std::vector<std::string> EMPTY_ARGS = {""};
3448f512ceSopenharmony_cistatic const std::vector<std::string> TEST_REG_ARG_1 = {TEST_CMD_1};
3548f512ceSopenharmony_cistatic const std::vector<std::string> TEST_REG_ARG_2 = {TEST_CMD_2};
3648f512ceSopenharmony_cistatic const std::vector<std::string> TEST_REG_ARG_3 = {TEST_CMD_3};
3748f512ceSopenharmony_cistatic const std::vector<std::string> TEST_REG_ARG_3S = {TEST_CMD_3, TEST_CMD_2, TEST_CMD_1};
3848f512ceSopenharmony_cistatic const std::vector<std::string> TEST_NOREG_ARG_1 = {TEST_NOREG_CMD};
3948f512ceSopenharmony_ci
4048f512ceSopenharmony_ciclass SubCommandTest : public SubCommand {
4148f512ceSopenharmony_cipublic:
4248f512ceSopenharmony_ci    explicit SubCommandTest(std::string name) : SubCommand(name, TEST_BRIEF, TEST_HELP) {}
4348f512ceSopenharmony_ci
4448f512ceSopenharmony_ci    bool OnSubCommand(std::vector<std::string> &args) override
4548f512ceSopenharmony_ci    {
4648f512ceSopenharmony_ci        return true;
4748f512ceSopenharmony_ci    }
4848f512ceSopenharmony_ci};
4948f512ceSopenharmony_ci
5048f512ceSopenharmony_ciusing ::testing::_;
5148f512ceSopenharmony_ciusing ::testing::Return;
5248f512ceSopenharmony_ci
5348f512ceSopenharmony_ciclass MockSubCommand : public SubCommand {
5448f512ceSopenharmony_cipublic:
5548f512ceSopenharmony_ci    explicit MockSubCommand(std::string name) : SubCommand(name, TEST_BRIEF, TEST_HELP) {}
5648f512ceSopenharmony_ci    MockSubCommand() : MockSubCommand("mock") {}
5748f512ceSopenharmony_ci    MOCK_METHOD1(OnSubCommand, bool(std::vector<std::string> &args));
5848f512ceSopenharmony_ci};
5948f512ceSopenharmony_ci} // namespace HiPerf
6048f512ceSopenharmony_ci} // namespace Developtools
6148f512ceSopenharmony_ci} // namespace OHOS
6248f512ceSopenharmony_ci#endif // HIPERF_SUBCOMMAND_TEST_H
63