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

Unified Diff: base/command_line_unittest.cc

Issue 6526040: CommandLine refactoring and cleanup. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix Test Created 9 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: base/command_line_unittest.cc
diff --git a/base/command_line_unittest.cc b/base/command_line_unittest.cc
index 6fd64407a470e1be897dec37d94cdad114d80b91..d121a6952609c3c7680032bd3cdafe72738eae3b 100644
--- a/base/command_line_unittest.cc
+++ b/base/command_line_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -21,26 +21,93 @@
#define TRICKY L"q\"bs1\\bs2\\\\bs3q\\\""
TEST(CommandLineTest, CommandLineConstructor) {
-#if defined(OS_WIN)
- CommandLine cl = CommandLine::FromString(
- L"program --foo= -bAr /Spaetzel=pierogi /Baz flim "
- L"--other-switches=\"--dog=canine --cat=feline\" "
- L"-spaetzle=Crepe -=loosevalue flan "
- L"--input-translation=\"45\"--output-rotation "
- L"--quotes=" TRICKY_QUOTED L" "
- L"-- -- --not-a-switch "
- L"\"in the time of submarines...\"");
+ const CommandLine::CharType* argv[] = {
+ FILE_PATH_LITERAL("program"),
+ FILE_PATH_LITERAL("--foo="),
+ FILE_PATH_LITERAL("-bar"),
+ FILE_PATH_LITERAL("-spaetzel=pierogi"),
+ FILE_PATH_LITERAL("-baz"),
+ FILE_PATH_LITERAL("flim"),
+ FILE_PATH_LITERAL("--other-switches=--dog=canine --cat=feline"),
+ FILE_PATH_LITERAL("-spaetzle=Crepe"),
+ FILE_PATH_LITERAL("-=loosevalue"),
+ FILE_PATH_LITERAL("flan"),
+ FILE_PATH_LITERAL("--input-translation=45--output-rotation"),
+ FILE_PATH_LITERAL("--"),
+ FILE_PATH_LITERAL("--"),
+ FILE_PATH_LITERAL("--not-a-switch"),
+ FILE_PATH_LITERAL("in the time of submarines...")};
+ CommandLine cl(arraysize(argv), argv);
+
EXPECT_FALSE(cl.command_line_string().empty());
+ EXPECT_FALSE(cl.HasSwitch("cruller"));
+ EXPECT_FALSE(cl.HasSwitch("flim"));
+ EXPECT_FALSE(cl.HasSwitch("program"));
+ EXPECT_FALSE(cl.HasSwitch("dog"));
+ EXPECT_FALSE(cl.HasSwitch("cat"));
+ EXPECT_FALSE(cl.HasSwitch("output-rotation"));
+ EXPECT_FALSE(cl.HasSwitch("not-a-switch"));
+ EXPECT_FALSE(cl.HasSwitch("--"));
+
+ EXPECT_EQ(FilePath(FILE_PATH_LITERAL("program")).value(),
+ cl.GetProgram().value());
+
+ EXPECT_TRUE(cl.HasSwitch("foo"));
+ EXPECT_TRUE(cl.HasSwitch("bar"));
+ EXPECT_TRUE(cl.HasSwitch("baz"));
+ EXPECT_TRUE(cl.HasSwitch("spaetzle"));
+ EXPECT_TRUE(cl.HasSwitch("other-switches"));
+ EXPECT_TRUE(cl.HasSwitch("input-translation"));
+
+ EXPECT_EQ("Crepe", cl.GetSwitchValueASCII("spaetzle"));
+ EXPECT_EQ("", cl.GetSwitchValueASCII("Foo"));
+ EXPECT_EQ("", cl.GetSwitchValueASCII("bar"));
+ EXPECT_EQ("", cl.GetSwitchValueASCII("cruller"));
+ EXPECT_EQ("--dog=canine --cat=feline", cl.GetSwitchValueASCII(
+ "other-switches"));
+ EXPECT_EQ("45--output-rotation", cl.GetSwitchValueASCII("input-translation"));
+
+ const std::vector<CommandLine::StringType>& args = cl.args();
+ ASSERT_EQ(5U, args.size());
+
+ std::vector<CommandLine::StringType>::const_iterator iter = args.begin();
+ EXPECT_EQ(FILE_PATH_LITERAL("flim"), *iter);
+ ++iter;
+ EXPECT_EQ(FILE_PATH_LITERAL("flan"), *iter);
+ ++iter;
+ EXPECT_EQ(FILE_PATH_LITERAL("--"), *iter);
+ ++iter;
+ EXPECT_EQ(FILE_PATH_LITERAL("--not-a-switch"), *iter);
+ ++iter;
+#if defined(OS_WIN)
+ EXPECT_EQ(FILE_PATH_LITERAL("\"in the time of submarines...\""), *iter);
#elif defined(OS_POSIX)
- const char* argv[] = {"program", "--foo=", "-bar",
- "-spaetzel=pierogi", "-baz", "flim",
- "--other-switches=--dog=canine --cat=feline",
- "-spaetzle=Crepe", "-=loosevalue", "flan",
- "--input-translation=45--output-rotation",
- "--", "--", "--not-a-switch",
- "in the time of submarines..."};
- CommandLine cl(arraysize(argv), argv);
+ EXPECT_EQ(FILE_PATH_LITERAL("in the time of submarines..."), *iter);
#endif
+ ++iter;
+ EXPECT_TRUE(iter == args.end());
+
+//#if defined(OS_POSIX)
+// // On Windows, arguments are quote-escaped and won't be exactly equivalent.
+// // On all platforms, sanitized args won't be exactly equivalent.
+// const std::vector<CommandLine::StringType>& argvec = cl.argv();
+// for (size_t i = 0; i < argvec.size(); i++)
+// EXPECT_EQ(0, argvec[i].compare(argv[i]));
+//#endif
+}
+
+TEST(CommandLineTest, CommandLineFromString) {
+#if defined(OS_WIN)
+ CommandLine cl = CommandLine::FromString(
+ L"program --foo= -bAr /Spaetzel=pierogi /Baz flim "
+ L"--other-switches=\"--dog=canine --cat=feline\" "
+ L"-spaetzle=Crepe -=loosevalue flan "
+ L"--input-translation=\"45\"--output-rotation "
+ L"--quotes=" TRICKY_QUOTED L" "
+ L"-- -- --not-a-switch "
+ L"\"in the time of submarines...\"");
+
+ EXPECT_FALSE(cl.command_line_string().empty());
EXPECT_FALSE(cl.HasSwitch("cruller"));
EXPECT_FALSE(cl.HasSwitch("flim"));
EXPECT_FALSE(cl.HasSwitch("program"));
@@ -57,14 +124,10 @@ TEST(CommandLineTest, CommandLineConstructor) {
EXPECT_TRUE(cl.HasSwitch("bar"));
EXPECT_TRUE(cl.HasSwitch("baz"));
EXPECT_TRUE(cl.HasSwitch("spaetzle"));
-#if defined(OS_WIN)
EXPECT_TRUE(cl.HasSwitch("SPAETZLE"));
-#endif
EXPECT_TRUE(cl.HasSwitch("other-switches"));
EXPECT_TRUE(cl.HasSwitch("input-translation"));
-#if defined(OS_WIN)
EXPECT_TRUE(cl.HasSwitch("quotes"));
-#endif
EXPECT_EQ("Crepe", cl.GetSwitchValueASCII("spaetzle"));
EXPECT_EQ("", cl.GetSwitchValueASCII("Foo"));
@@ -73,9 +136,7 @@ TEST(CommandLineTest, CommandLineConstructor) {
EXPECT_EQ("--dog=canine --cat=feline", cl.GetSwitchValueASCII(
"other-switches"));
EXPECT_EQ("45--output-rotation", cl.GetSwitchValueASCII("input-translation"));
-#if defined(OS_WIN)
EXPECT_EQ(TRICKY, cl.GetSwitchValueNative("quotes"));
-#endif
const std::vector<CommandLine::StringType>& args = cl.args();
ASSERT_EQ(5U, args.size());
@@ -89,28 +150,21 @@ TEST(CommandLineTest, CommandLineConstructor) {
++iter;
EXPECT_EQ(FILE_PATH_LITERAL("--not-a-switch"), *iter);
++iter;
- EXPECT_EQ(FILE_PATH_LITERAL("in the time of submarines..."), *iter);
+ EXPECT_EQ(FILE_PATH_LITERAL("\"in the time of submarines...\""), *iter);
++iter;
EXPECT_TRUE(iter == args.end());
-#if defined(OS_POSIX)
- const std::vector<std::string>& argvec = cl.argv();
-
- for (size_t i = 0; i < argvec.size(); i++) {
- EXPECT_EQ(0, argvec[i].compare(argv[i]));
- }
#endif
}
// Tests behavior with an empty input string.
TEST(CommandLineTest, EmptyString) {
#if defined(OS_WIN)
- CommandLine cl = CommandLine::FromString(L"");
- EXPECT_TRUE(cl.command_line_string().empty());
- EXPECT_TRUE(cl.GetProgram().empty());
-#elif defined(OS_POSIX)
+ CommandLine cl_from_string = CommandLine::FromString(L"");
+ EXPECT_TRUE(cl_from_string.command_line_string().empty());
+ EXPECT_TRUE(cl_from_string.GetProgram().empty());
+#endif
CommandLine cl(0, NULL);
EXPECT_TRUE(cl.argv().size() == 0);
-#endif
EXPECT_EQ(0U, cl.args().size());
}

Powered by Google App Engine
This is Rietveld 408576698