OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <string> | 5 #include <string> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
11 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
12 | 12 |
13 TEST(CommandLineTest, CommandLineConstructor) { | 13 TEST(CommandLineTest, CommandLineConstructor) { |
14 #if defined(OS_WIN) | 14 #if defined(OS_WIN) |
15 CommandLine cl(L""); | 15 CommandLine cl = CommandLine::FromString( |
16 cl.ParseFromString(L"program --foo= -bAr /Spaetzel=pierogi /Baz flim " | 16 L"program --foo= -bAr /Spaetzel=pierogi /Baz flim " |
17 L"--other-switches=\"--dog=canine --cat=feline\" " | 17 L"--other-switches=\"--dog=canine --cat=feline\" " |
18 L"-spaetzle=Crepe -=loosevalue flan " | 18 L"-spaetzle=Crepe -=loosevalue flan " |
19 L"--input-translation=\"45\"--output-rotation " | 19 L"--input-translation=\"45\"--output-rotation " |
20 L"-- -- --not-a-switch " | 20 L"-- -- --not-a-switch " |
21 L"\"in the time of submarines...\""); | 21 L"\"in the time of submarines...\""); |
22 EXPECT_FALSE(cl.command_line_string().empty()); | 22 EXPECT_FALSE(cl.command_line_string().empty()); |
23 #elif defined(OS_POSIX) | 23 #elif defined(OS_POSIX) |
24 const char* argv[] = {"program", "--foo=", "-bar", | 24 const char* argv[] = {"program", "--foo=", "-bar", |
25 "-spaetzel=pierogi", "-baz", "flim", | 25 "-spaetzel=pierogi", "-baz", "flim", |
26 "--other-switches=--dog=canine --cat=feline", | 26 "--other-switches=--dog=canine --cat=feline", |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 | 78 |
79 for (size_t i = 0; i < argvec.size(); i++) { | 79 for (size_t i = 0; i < argvec.size(); i++) { |
80 EXPECT_EQ(0, argvec[i].compare(argv[i])); | 80 EXPECT_EQ(0, argvec[i].compare(argv[i])); |
81 } | 81 } |
82 #endif | 82 #endif |
83 } | 83 } |
84 | 84 |
85 // Tests behavior with an empty input string. | 85 // Tests behavior with an empty input string. |
86 TEST(CommandLineTest, EmptyString) { | 86 TEST(CommandLineTest, EmptyString) { |
87 #if defined(OS_WIN) | 87 #if defined(OS_WIN) |
88 CommandLine cl(L""); | 88 CommandLine cl = CommandLine::FromString(L""); |
89 EXPECT_TRUE(cl.command_line_string().empty()); | 89 EXPECT_TRUE(cl.command_line_string().empty()); |
90 EXPECT_TRUE(cl.program().empty()); | 90 EXPECT_TRUE(cl.program().empty()); |
91 #elif defined(OS_POSIX) | 91 #elif defined(OS_POSIX) |
92 CommandLine cl(0, NULL); | 92 CommandLine cl(0, NULL); |
93 EXPECT_TRUE(cl.argv().size() == 0); | 93 EXPECT_TRUE(cl.argv().size() == 0); |
94 #endif | 94 #endif |
95 EXPECT_EQ(0U, cl.GetLooseValues().size()); | 95 EXPECT_EQ(0U, cl.GetLooseValues().size()); |
96 } | 96 } |
97 | 97 |
98 // Test methods for appending switches to a command line. | 98 // Test methods for appending switches to a command line. |
99 TEST(CommandLineTest, AppendSwitches) { | 99 TEST(CommandLineTest, AppendSwitches) { |
100 std::string switch1 = "switch1"; | 100 std::string switch1 = "switch1"; |
101 std::string switch2 = "switch2"; | 101 std::string switch2 = "switch2"; |
102 std::wstring value = L"value"; | 102 std::wstring value = L"value"; |
103 std::string switch3 = "switch3"; | 103 std::string switch3 = "switch3"; |
104 std::wstring value3 = L"a value with spaces"; | 104 std::wstring value3 = L"a value with spaces"; |
105 std::string switch4 = "switch4"; | 105 std::string switch4 = "switch4"; |
106 std::wstring value4 = L"\"a value with quotes\""; | 106 std::wstring value4 = L"\"a value with quotes\""; |
107 | 107 |
108 #if defined(OS_WIN) | 108 CommandLine cl(FilePath(FILE_PATH_LITERAL("Program"))); |
109 CommandLine cl(L"Program"); | |
110 #elif defined(OS_POSIX) | |
111 std::vector<std::string> argv; | |
112 argv.push_back(std::string("Program")); | |
113 CommandLine cl(argv); | |
114 #endif | |
115 | 109 |
116 cl.AppendSwitch(switch1); | 110 cl.AppendSwitch(switch1); |
117 cl.AppendSwitchWithValue(switch2, value); | 111 cl.AppendSwitchWithValue(switch2, value); |
118 cl.AppendSwitchWithValue(switch3, value3); | 112 cl.AppendSwitchWithValue(switch3, value3); |
119 cl.AppendSwitchWithValue(switch4, value4); | 113 cl.AppendSwitchWithValue(switch4, value4); |
120 | 114 |
121 EXPECT_TRUE(cl.HasSwitch(switch1)); | 115 EXPECT_TRUE(cl.HasSwitch(switch1)); |
122 EXPECT_TRUE(cl.HasSwitch(switch2)); | 116 EXPECT_TRUE(cl.HasSwitch(switch2)); |
123 EXPECT_EQ(value, cl.GetSwitchValue(switch2)); | 117 EXPECT_EQ(value, cl.GetSwitchValue(switch2)); |
124 EXPECT_TRUE(cl.HasSwitch(switch3)); | 118 EXPECT_TRUE(cl.HasSwitch(switch3)); |
125 EXPECT_EQ(value3, cl.GetSwitchValue(switch3)); | 119 EXPECT_EQ(value3, cl.GetSwitchValue(switch3)); |
126 EXPECT_TRUE(cl.HasSwitch(switch4)); | 120 EXPECT_TRUE(cl.HasSwitch(switch4)); |
127 EXPECT_EQ(value4, cl.GetSwitchValue(switch4)); | 121 EXPECT_EQ(value4, cl.GetSwitchValue(switch4)); |
128 } | 122 } |
OLD | NEW |