/* * 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 argv; string expectedInput; string expectedOutput; bool expectedOverwriteOutput; bool wantError; }; std::vector tests; tests.push_back(Test{ .desc = "With input, output and overwrite flags", .argv = {"", "-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 = {"", "-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 = {"", "-f"}, .expectedInput = "", .expectedOutput = "", .expectedOverwriteOutput = false, .wantError = true, }); tests.push_back(Test{ .desc = "With input, output, and invalid flags", .argv = {"", "-i", "input_perf_file", "-o", "output_profile", "-F"}, .expectedInput = "", .expectedOutput = "", .expectedOverwriteOutput = false, .wantError = true, }); tests.push_back(Test{ .desc = "With an invalid flag", .argv = {"", "-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(); }