|  | // Copyright 2020 The Fuchsia Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include "tools/symbol-index/command_line_options.h" | 
|  |  | 
|  | #include <gtest/gtest.h> | 
|  |  | 
|  | namespace symbol_index { | 
|  |  | 
|  | namespace { | 
|  |  | 
|  | TEST(CommandLineOptionsTest, List) { | 
|  | CommandLineOptions options; | 
|  | const char* argv[] = {"", "list"}; | 
|  |  | 
|  | const Error error = ParseCommandLine(sizeof(argv) / sizeof(char*), argv, &options); | 
|  | ASSERT_TRUE(error.empty()); | 
|  | ASSERT_TRUE(options.symbol_index_file.empty()); | 
|  | ASSERT_EQ(options.verb, CommandLineOptions::Verb::kList); | 
|  | ASSERT_TRUE(options.params.empty()); | 
|  | } | 
|  |  | 
|  | TEST(CommandLineOptionsTest, Add) { | 
|  | CommandLineOptions options; | 
|  | const char* argv[] = {"", "add", "/some/symbol_path"}; | 
|  |  | 
|  | const Error error = ParseCommandLine(sizeof(argv) / sizeof(char*), argv, &options); | 
|  | ASSERT_EQ(options.verb, CommandLineOptions::Verb::kAdd); | 
|  | ASSERT_EQ(options.params.size(), 1UL); | 
|  | ASSERT_EQ(options.params[0], "/some/symbol_path"); | 
|  | } | 
|  |  | 
|  | TEST(CommandLineOptionsTest, AddTwoArgs) { | 
|  | CommandLineOptions options; | 
|  | const char* argv[] = {"", "add", "/some/symbol_path", "/some/build_dir"}; | 
|  |  | 
|  | const Error error = ParseCommandLine(sizeof(argv) / sizeof(char*), argv, &options); | 
|  | ASSERT_EQ(options.verb, CommandLineOptions::Verb::kAdd); | 
|  | ASSERT_EQ(options.params.size(), 2UL); | 
|  | ASSERT_EQ(options.params[1], "/some/build_dir"); | 
|  | } | 
|  |  | 
|  | TEST(CommandLineOptionsTest, InvalidVerb) { | 
|  | CommandLineOptions options; | 
|  | const char* argv[] = {"", "addd", "/some/symbol_path", "/some/build_dir"}; | 
|  |  | 
|  | const Error error = ParseCommandLine(sizeof(argv) / sizeof(char*), argv, &options); | 
|  | ASSERT_FALSE(error.empty()); | 
|  | } | 
|  |  | 
|  | TEST(CommandLineOptionsTest, InvalidNumOfArgs) { | 
|  | CommandLineOptions options; | 
|  | const char* argv[] = {"", "list", "/some/symbol_path"}; | 
|  |  | 
|  | const Error error = ParseCommandLine(sizeof(argv) / sizeof(char*), argv, &options); | 
|  | ASSERT_FALSE(error.empty()); | 
|  | } | 
|  |  | 
|  | TEST(CommandLineOptionsTest, CustomPath) { | 
|  | CommandLineOptions options; | 
|  | const char* argv[] = {"", "-c", "path/to/config", "list"}; | 
|  |  | 
|  | const Error error = ParseCommandLine(sizeof(argv) / sizeof(char*), argv, &options); | 
|  | ASSERT_EQ(options.symbol_index_file, "path/to/config"); | 
|  | } | 
|  |  | 
|  | }  // namespace | 
|  |  | 
|  | }  // namespace symbol_index |