OLD | NEW |
| (Empty) |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "mojo/shell/command_line_util.h" | |
6 | |
7 #include "base/logging.h" | |
8 #include "testing/gtest/include/gtest/gtest.h" | |
9 | |
10 namespace mojo { | |
11 namespace shell { | |
12 namespace { | |
13 | |
14 TEST(CommandLineUtil, ParseArgsFor) { | |
15 static const struct Expectation { | |
16 const char* args; | |
17 const char* value; | |
18 } EXPECTATIONS[] = { | |
19 {"", nullptr}, | |
20 {"hello", nullptr}, | |
21 {"args-for=mojo:app1", nullptr}, | |
22 {"--args-for", nullptr}, | |
23 {"--args-for=", ""}, | |
24 {"--args-for=mojo:app1", "mojo:app1"}, | |
25 {"--args-for=mojo:app1 hello world", "mojo:app1 hello world"}, | |
26 {"-args-for", nullptr}, | |
27 {"-args-for=", ""}, | |
28 {"-args-for=mojo:app1", "mojo:app1"}, | |
29 {"-args-for=mojo:app1 hello world", "mojo:app1 hello world"}}; | |
30 for (auto& expectation : EXPECTATIONS) { | |
31 std::string value; | |
32 bool result = ParseArgsFor(expectation.args, &value); | |
33 EXPECT_EQ(bool(expectation.value), result); | |
34 if (expectation.value && result) | |
35 EXPECT_EQ(value, expectation.value); | |
36 } | |
37 } | |
38 | |
39 TEST(CommandLineUtil, GetAppURLAndArgs) { | |
40 const char* NO_ARGUMENTS[] = {nullptr}; | |
41 const char* ONE_ARGUMENTS[] = {"1", nullptr}; | |
42 const char* TWO_ARGUMENTS[] = {"1", "two", nullptr}; | |
43 static const struct Expectation { | |
44 const char* args; | |
45 const char* url; | |
46 const char** values; | |
47 } EXPECTATIONS[] = { | |
48 {"", nullptr, nullptr}, | |
49 {"foo", "file:///root/foo", NO_ARGUMENTS}, | |
50 {"/foo", "file:///foo", NO_ARGUMENTS}, | |
51 {"file:foo", "file:///root/foo", NO_ARGUMENTS}, | |
52 {"file:///foo", "file:///foo", NO_ARGUMENTS}, | |
53 {"http://example.com", "http://example.com", NO_ARGUMENTS}, | |
54 {"http://example.com 1", "http://example.com", ONE_ARGUMENTS}, | |
55 {"http://example.com 1 ", "http://example.com", ONE_ARGUMENTS}, | |
56 {"http://example.com 1 ", "http://example.com", ONE_ARGUMENTS}, | |
57 {"http://example.com 1 two", "http://example.com", TWO_ARGUMENTS}, | |
58 {" http://example.com 1 two ", | |
59 "http://example.com", | |
60 TWO_ARGUMENTS}}; | |
61 Context context; | |
62 context.SetCommandLineCWD(base::FilePath(FILE_PATH_LITERAL("/root"))); | |
63 for (auto& expectation : EXPECTATIONS) { | |
64 std::vector<std::string> args; | |
65 GURL result(GetAppURLAndArgs(&context, expectation.args, &args)); | |
66 EXPECT_EQ(bool(expectation.url), result.is_valid()); | |
67 if (expectation.url && result.is_valid()) { | |
68 EXPECT_EQ(GURL(expectation.url), result); | |
69 std::vector<std::string> expected_args; | |
70 if (expectation.values) { | |
71 if (*expectation.values) | |
72 expected_args.push_back(expectation.url); | |
73 for (const char** value = expectation.values; *value; ++value) | |
74 expected_args.push_back(*value); | |
75 } | |
76 EXPECT_EQ(expected_args, args); | |
77 } | |
78 } | |
79 } | |
80 | |
81 } // namespace | |
82 } // namespace shell | |
83 } // namespace mojo | |
OLD | NEW |