Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1108)

Side by Side Diff: base/command_line_parser_unittest.cc

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « base/command_line_parser_internal.h ('k') | base/command_line_validator.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2008-2009 Google Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 // ========================================================================
15
16 #include "omaha/base/command_line_parser.h"
17 #include "omaha/testing/unit_test.h"
18
19 namespace omaha {
20
21 // This will succeed since the CommandLineToArgvW function returns the
22 // path to the current executable file if it's passed the empty string.
23 TEST(CommandLineParserTest, ParseFromString_NullString) {
24 CommandLineParser parser;
25 EXPECT_SUCCEEDED(parser.ParseFromString(NULL));
26 EXPECT_EQ(0, parser.GetSwitchCount());
27 }
28
29 // This will succeed since the CommandLineToArgvW function returns the
30 // path to the current executable file if it's passed the empty string.
31 TEST(CommandLineParserTest, ParseFromString_EmptyString) {
32 CommandLineParser parser;
33 EXPECT_SUCCEEDED(parser.ParseFromString(_T("")));
34 EXPECT_EQ(0, parser.GetSwitchCount());
35 }
36
37 // This will succeed since the CommandLineToArgvW function returns the
38 // path to the current executable file if it's passed the empty string.
39 TEST(CommandLineParserTest, ParseFromString_SpacesOnlyString) {
40 CommandLineParser parser;
41 EXPECT_SUCCEEDED(parser.ParseFromString(_T(" ")));
42 }
43
44 TEST(CommandLineParserTest, ParseFromArgv_NullArgv) {
45 CommandLineParser parser;
46 EXPECT_FAILED(parser.ParseFromArgv(0, NULL));
47 }
48
49 TEST(CommandLineParserTest, CallFunctionsBeforeParse) {
50 CommandLineParser parser;
51 int arg_count = 0;
52 CString arg_value;
53 EXPECT_FALSE(parser.HasSwitch(_T("foo")));
54 EXPECT_EQ(0, parser.GetSwitchCount());
55 EXPECT_FAILED(parser.GetSwitchArgumentCount(_T("foo"), &arg_count));
56 EXPECT_FAILED(parser.GetSwitchArgumentValue(_T("foo"), 0, &arg_value));
57 }
58
59 TEST(CommandLineParserTest, ParseFromString_ProgramNameOnly) {
60 CommandLineParser parser;
61 EXPECT_SUCCEEDED(parser.ParseFromString(_T("myprog.exe")));
62 EXPECT_EQ(0, parser.GetSwitchCount());
63 }
64
65 TEST(CommandLineParserTest, ValidateSwitchMixedCase) {
66 CommandLineParser parser;
67 EXPECT_SUCCEEDED(parser.ParseFromString(_T("myprog.exe /FooP")));
68 EXPECT_EQ(1, parser.GetSwitchCount());
69 EXPECT_TRUE(parser.HasSwitch(_T("foop")));
70 EXPECT_TRUE(parser.HasSwitch(_T("FooP")));
71 EXPECT_TRUE(parser.HasSwitch(_T("fOOp")));
72 EXPECT_TRUE(parser.HasSwitch(_T("FOOP")));
73 EXPECT_FALSE(parser.HasSwitch(_T("blAH")));
74 }
75
76 TEST(CommandLineParserTest, ParseFromString_OneSwitchNoArgs) {
77 CommandLineParser parser;
78 int arg_count = 0;
79 EXPECT_SUCCEEDED(parser.ParseFromString(_T("myprog.exe /foo")));
80 EXPECT_EQ(1, parser.GetSwitchCount());
81 EXPECT_TRUE(parser.HasSwitch(_T("foo")));
82 EXPECT_SUCCEEDED(parser.GetSwitchArgumentCount(_T("foo"), &arg_count));
83 EXPECT_EQ(0, arg_count);
84 }
85
86 TEST(CommandLineParserTest, ParseFromString_OneSwitchOneArg) {
87 CommandLineParser parser;
88 int arg_count = 0;
89 CString arg_value;
90 EXPECT_SUCCEEDED(parser.ParseFromString(_T("myprog.exe /foo bar")));
91 EXPECT_EQ(1, parser.GetSwitchCount());
92 EXPECT_TRUE(parser.HasSwitch(_T("foo")));
93 EXPECT_SUCCEEDED(parser.GetSwitchArgumentCount(_T("foo"), &arg_count));
94 EXPECT_EQ(1, arg_count);
95 EXPECT_SUCCEEDED(parser.GetSwitchArgumentValue(_T("foo"), 0, &arg_value));
96 EXPECT_STREQ(_T("bar"), arg_value);
97 }
98
99 TEST(CommandLineParserTest, ParseFromString_OneSwitchTwoArgs) {
100 CommandLineParser parser;
101 int arg_count = 0;
102 CString arg_value;
103 EXPECT_SUCCEEDED(parser.ParseFromString(_T("myprog.exe /foo bar baz")));
104 EXPECT_EQ(1, parser.GetSwitchCount());
105 EXPECT_TRUE(parser.HasSwitch(_T("foo")));
106 EXPECT_SUCCEEDED(parser.GetSwitchArgumentCount(_T("foo"), &arg_count));
107 EXPECT_EQ(2, arg_count);
108 EXPECT_SUCCEEDED(parser.GetSwitchArgumentValue(_T("foo"), 0, &arg_value));
109 EXPECT_STREQ(_T("bar"), arg_value);
110 EXPECT_SUCCEEDED(parser.GetSwitchArgumentValue(_T("foo"), 1, &arg_value));
111 EXPECT_STREQ(_T("baz"), arg_value);
112 }
113
114 TEST(CommandLineParserTest, ParseFromString_TwoSwitchesNoArgs) {
115 CommandLineParser parser;
116 int arg_count = 0;
117 CString arg_value;
118 EXPECT_SUCCEEDED(parser.ParseFromString(_T("myprog.exe /foo /bar")));
119 EXPECT_EQ(2, parser.GetSwitchCount());
120 EXPECT_TRUE(parser.HasSwitch(_T("foo")));
121 EXPECT_TRUE(parser.HasSwitch(_T("bar")));
122 EXPECT_SUCCEEDED(parser.GetSwitchArgumentCount(_T("foo"), &arg_count));
123 EXPECT_EQ(0, arg_count);
124 EXPECT_SUCCEEDED(parser.GetSwitchArgumentCount(_T("bar"), &arg_count));
125 EXPECT_EQ(0, arg_count);
126 }
127
128 TEST(CommandLineParserTest, ParseFromString_TwoSwitchesOneArgNoArg) {
129 CommandLineParser parser;
130 int arg_count = 0;
131 CString arg_value;
132 EXPECT_SUCCEEDED(parser.ParseFromString(_T("myprog.exe /foo blech /bar")));
133 EXPECT_EQ(2, parser.GetSwitchCount());
134 EXPECT_TRUE(parser.HasSwitch(_T("foo")));
135 EXPECT_TRUE(parser.HasSwitch(_T("bar")));
136 EXPECT_SUCCEEDED(parser.GetSwitchArgumentCount(_T("foo"), &arg_count));
137 EXPECT_EQ(1, arg_count);
138 EXPECT_SUCCEEDED(parser.GetSwitchArgumentValue(_T("foo"), 0, &arg_value));
139 EXPECT_STREQ(_T("blech"), arg_value);
140 EXPECT_SUCCEEDED(parser.GetSwitchArgumentCount(_T("bar"), &arg_count));
141 EXPECT_EQ(0, arg_count);
142 }
143
144 TEST(CommandLineParserTest, ParseFromString_ArgInQuotesWithLeadingSlash) {
145 CommandLineParser parser;
146 int arg_count = 0;
147 CString arg_value;
148 EXPECT_SUCCEEDED(parser.ParseFromString(_T("f.exe /pi \"arg\" \"/sw x\"")));
149 EXPECT_EQ(1, parser.GetSwitchCount());
150 EXPECT_TRUE(parser.HasSwitch(_T("pi")));
151 EXPECT_SUCCEEDED(parser.GetSwitchArgumentCount(_T("pi"), &arg_count));
152 EXPECT_EQ(2, arg_count);
153 EXPECT_SUCCEEDED(parser.GetSwitchArgumentValue(_T("pi"), 0, &arg_value));
154 EXPECT_STREQ(_T("arg"), arg_value);
155 EXPECT_SUCCEEDED(parser.GetSwitchArgumentValue(_T("pi"), 1, &arg_value));
156 EXPECT_STREQ(_T("/sw x"), arg_value);
157 }
158
159 // Paths with spaces and no enclosing quotes is not supported. Thus, there is
160 // no test for it.
161 TEST(CommandLineParserTest, ParseFromString_SpaceInPathWithQuotes) {
162 CommandLineParser parser;
163 int arg_count = 0;
164 CString arg_value;
165 EXPECT_SUCCEEDED(
166 parser.ParseFromString(_T("\"C:\\Space In Path\\myprog.exe\" /foo bar")));
167 EXPECT_EQ(1, parser.GetSwitchCount());
168 EXPECT_TRUE(parser.HasSwitch(_T("foo")));
169 EXPECT_SUCCEEDED(parser.GetSwitchArgumentCount(_T("foo"), &arg_count));
170 EXPECT_EQ(1, arg_count);
171 EXPECT_SUCCEEDED(parser.GetSwitchArgumentValue(_T("foo"), 0, &arg_value));
172 EXPECT_STREQ(_T("bar"), arg_value);
173 }
174
175 } // namespace omaha
OLDNEW
« no previous file with comments | « base/command_line_parser_internal.h ('k') | base/command_line_validator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698