| /* |
| * Copyright (c) 2018, Google Inc. |
| * All rights reserved. |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #include "perf_to_profile_lib.h" |
| #include "base/logging.h" |
| #include "test_compat.h" |
| |
| namespace { |
| |
| using ::testing::Eq; |
| |
| TEST(PerfToProfileTest, ParseArguments) { |
| struct Test { |
| string desc; |
| std::vector<const char*> argv; |
| string expectedInput; |
| string expectedOutput; |
| bool expectedOverwriteOutput; |
| bool wantError; |
| }; |
| |
| std::vector<Test> tests; |
| tests.push_back(Test{ |
| .desc = "With input, output and overwrite flags", |
| .argv = {"<exec>", "-i", "input_perf_file", "-o", "output_profile", "-f"}, |
| .expectedInput = "input_perf_file", |
| .expectedOutput = "output_profile", |
| .expectedOverwriteOutput = true, |
| .wantError = false, |
| }); |
| tests.push_back(Test{ |
| .desc = "With input and output flags", |
| .argv = {"<exec>", "-i", "input_perf_file", "-o", "output_profile"}, |
| .expectedInput = "input_perf_file", |
| .expectedOutput = "output_profile", |
| .expectedOverwriteOutput = false, |
| .wantError = false, |
| }); |
| tests.push_back(Test{ |
| .desc = "With only overwrite flag", |
| .argv = {"<exec>", "-f"}, |
| .expectedInput = "", |
| .expectedOutput = "", |
| .expectedOverwriteOutput = false, |
| .wantError = true, |
| }); |
| tests.push_back(Test{ |
| .desc = "With input, output, and invalid flags", |
| .argv = {"<exec>", "-i", "input_perf_file", "-o", "output_profile", "-F"}, |
| .expectedInput = "", |
| .expectedOutput = "", |
| .expectedOverwriteOutput = false, |
| .wantError = true, |
| }); |
| tests.push_back(Test{ |
| .desc = "With an invalid flag", |
| .argv = {"<exec>", "-F"}, |
| .expectedInput = "", |
| .expectedOutput = "", |
| .expectedOverwriteOutput = false, |
| .wantError = true, |
| }); |
| for (auto test : tests) { |
| string input; |
| string output; |
| bool overwriteOutput; |
| LOG(INFO) << "Testing: " << test.desc; |
| EXPECT_THAT(ParseArguments(test.argv.size(), test.argv.data(), &input, |
| &output, &overwriteOutput), |
| Eq(!test.wantError)); |
| if (!test.wantError) { |
| EXPECT_THAT(input, Eq(test.expectedInput)); |
| EXPECT_THAT(output, Eq(test.expectedOutput)); |
| EXPECT_THAT(overwriteOutput, Eq(test.expectedOverwriteOutput)); |
| } |
| optind = 1; |
| } |
| } |
| |
| } // namespace |
| |
| int main(int argc, char** argv) { |
| testing::InitGoogleTest(&argc, argv); |
| return RUN_ALL_TESTS(); |
| } |