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

Side by Side Diff: tools/gn/input_conversion_unittest.cc

Issue 223783005: Add support for reading .gypi files. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "testing/gtest/include/gtest/gtest.h" 5 #include "testing/gtest/include/gtest/gtest.h"
6 #include "tools/gn/err.h" 6 #include "tools/gn/err.h"
7 #include "tools/gn/input_conversion.h" 7 #include "tools/gn/input_conversion.h"
8 #include "tools/gn/input_file.h"
9 #include "tools/gn/parse_tree.h"
10 #include "tools/gn/scheduler.h"
8 #include "tools/gn/value.h" 11 #include "tools/gn/value.h"
9 12
10 TEST(InputConversion, String) { 13 namespace {
14
15 // InputConversion needs a global scheduler object.
16 class InputConversionTest : public testing::Test {
17 public:
18 InputConversionTest() {}
19
20 private:
21 Scheduler scheduler_;
22 };
23
24 } // namespace
25
26 TEST_F(InputConversionTest, String) {
11 Err err; 27 Err err;
12 std::string input("\nfoo bar \n"); 28 std::string input("\nfoo bar \n");
13 Value result = ConvertInputToValue(input, NULL, Value(NULL, "string"), &err); 29 Value result = ConvertInputToValue(input, NULL, Value(NULL, "string"), &err);
14 EXPECT_FALSE(err.has_error()); 30 EXPECT_FALSE(err.has_error());
15 EXPECT_EQ(Value::STRING, result.type()); 31 EXPECT_EQ(Value::STRING, result.type());
16 EXPECT_EQ(input, result.string_value()); 32 EXPECT_EQ(input, result.string_value());
17 33
18 // Test with trimming. 34 // Test with trimming.
19 result = ConvertInputToValue(input, NULL, Value(NULL, "trim string"), &err); 35 result = ConvertInputToValue(input, NULL, Value(NULL, "trim string"), &err);
20 EXPECT_FALSE(err.has_error()); 36 EXPECT_FALSE(err.has_error());
21 EXPECT_EQ(Value::STRING, result.type()); 37 EXPECT_EQ(Value::STRING, result.type());
22 EXPECT_EQ("foo bar", result.string_value()); 38 EXPECT_EQ("foo bar", result.string_value());
23 } 39 }
24 40
25 TEST(InputConversion, ListLines) { 41 TEST_F(InputConversionTest, ListLines) {
26 Err err; 42 Err err;
27 std::string input("\nfoo\nbar \n\n"); 43 std::string input("\nfoo\nbar \n\n");
28 Value result = ConvertInputToValue(input, NULL, Value(NULL, "list lines"), 44 Value result = ConvertInputToValue(input, NULL, Value(NULL, "list lines"),
29 &err); 45 &err);
30 EXPECT_FALSE(err.has_error()); 46 EXPECT_FALSE(err.has_error());
31 EXPECT_EQ(Value::LIST, result.type()); 47 EXPECT_EQ(Value::LIST, result.type());
32 ASSERT_EQ(4u, result.list_value().size()); 48 ASSERT_EQ(4u, result.list_value().size());
33 EXPECT_EQ("", result.list_value()[0].string_value()); 49 EXPECT_EQ("", result.list_value()[0].string_value());
34 EXPECT_EQ("foo", result.list_value()[1].string_value()); 50 EXPECT_EQ("foo", result.list_value()[1].string_value());
35 EXPECT_EQ("bar", result.list_value()[2].string_value()); 51 EXPECT_EQ("bar", result.list_value()[2].string_value());
36 EXPECT_EQ("", result.list_value()[3].string_value()); 52 EXPECT_EQ("", result.list_value()[3].string_value());
37 53
38 // Test with trimming. 54 // Test with trimming.
39 result = ConvertInputToValue(input, NULL, Value(NULL, "trim list lines"), 55 result = ConvertInputToValue(input, NULL, Value(NULL, "trim list lines"),
40 &err); 56 &err);
41 EXPECT_FALSE(err.has_error()); 57 EXPECT_FALSE(err.has_error());
42 EXPECT_EQ(Value::LIST, result.type()); 58 EXPECT_EQ(Value::LIST, result.type());
43 ASSERT_EQ(2u, result.list_value().size()); 59 ASSERT_EQ(2u, result.list_value().size());
44 EXPECT_EQ("foo", result.list_value()[0].string_value()); 60 EXPECT_EQ("foo", result.list_value()[0].string_value());
45 EXPECT_EQ("bar", result.list_value()[1].string_value()); 61 EXPECT_EQ("bar", result.list_value()[1].string_value());
46 } 62 }
47 63
48 TEST(InputConversion, ValueString) { 64 TEST_F(InputConversionTest, ValueString) {
49 Err err; 65 Err err;
50 std::string input("\"str\""); 66 std::string input("\"str\"");
51 Value result = ConvertInputToValue(input, NULL, Value(NULL, "value"), &err); 67 Value result = ConvertInputToValue(input, NULL, Value(NULL, "value"), &err);
52 EXPECT_FALSE(err.has_error()); 68 EXPECT_FALSE(err.has_error());
53 EXPECT_EQ(Value::STRING, result.type()); 69 EXPECT_EQ(Value::STRING, result.type());
54 EXPECT_EQ("str", result.string_value()); 70 EXPECT_EQ("str", result.string_value());
55 } 71 }
56 72
57 TEST(InputConversion, ValueInt) { 73 TEST_F(InputConversionTest, ValueInt) {
58 Err err; 74 Err err;
59 std::string input("\n\n 6 \n "); 75 std::string input("\n\n 6 \n ");
60 Value result = ConvertInputToValue(input, NULL, Value(NULL, "value"), &err); 76 Value result = ConvertInputToValue(input, NULL, Value(NULL, "value"), &err);
61 EXPECT_FALSE(err.has_error()); 77 EXPECT_FALSE(err.has_error());
62 EXPECT_EQ(Value::INTEGER, result.type()); 78 EXPECT_EQ(Value::INTEGER, result.type());
63 EXPECT_EQ(6, result.int_value()); 79 EXPECT_EQ(6, result.int_value());
64 } 80 }
65 81
66 TEST(InputConversion, ValueList) { 82 TEST_F(InputConversionTest, ValueList) {
67 Err err; 83 Err err;
68 std::string input("\n [ \"a\", 5]"); 84 std::string input("\n [ \"a\", 5]");
69 Value result = ConvertInputToValue(input, NULL, Value(NULL, "value"), &err); 85 Value result = ConvertInputToValue(input, NULL, Value(NULL, "value"), &err);
70 EXPECT_FALSE(err.has_error()); 86 EXPECT_FALSE(err.has_error());
71 ASSERT_EQ(Value::LIST, result.type()); 87 ASSERT_EQ(Value::LIST, result.type());
72 ASSERT_EQ(2u, result.list_value().size()); 88 ASSERT_EQ(2u, result.list_value().size());
73 EXPECT_EQ("a", result.list_value()[0].string_value()); 89 EXPECT_EQ("a", result.list_value()[0].string_value());
74 EXPECT_EQ(5, result.list_value()[1].int_value()); 90 EXPECT_EQ(5, result.list_value()[1].int_value());
75 } 91 }
76 92
77 TEST(InputConversion, ValueEmpty) { 93 TEST_F(InputConversionTest, ValueDict) {
94 Err err;
95 std::string input("\n a = 5 b = \"foo\" c = a + 2");
96 Value result = ConvertInputToValue(input, NULL, Value(NULL, "scope"), &err);
97 EXPECT_FALSE(err.has_error());
98 ASSERT_EQ(Value::DICT, result.type());
99 ASSERT_EQ(3u, result.dict_value().size());
100 EXPECT_EQ(5, result.dict_value()["a"].int_value());
101 EXPECT_EQ("foo", result.dict_value()["b"].string_value());
102 EXPECT_EQ(7, result.dict_value()["c"].int_value());
103
104 // Tests that when we get Values out of the input conversion, the resulting
105 // values have an origin set to something corresponding to the input.
106 Value a = result.dict_value()["a"];
107 const ParseNode* a_origin = a.origin();
108 ASSERT_TRUE(a_origin);
109 LocationRange a_range = a_origin->GetRange();
110 EXPECT_EQ(2, a_range.begin().line_number());
111 EXPECT_EQ(6, a_range.begin().char_offset());
112
113 const InputFile* a_file = a_range.begin().file();
114 EXPECT_EQ(input, a_file->contents());
115 }
116
117 TEST_F(InputConversionTest, ValueEmpty) {
78 Err err; 118 Err err;
79 Value result = ConvertInputToValue("", NULL, Value(NULL, "value"), &err); 119 Value result = ConvertInputToValue("", NULL, Value(NULL, "value"), &err);
80 EXPECT_FALSE(err.has_error()); 120 EXPECT_FALSE(err.has_error());
81 EXPECT_EQ(Value::NONE, result.type()); 121 EXPECT_EQ(Value::NONE, result.type());
82 } 122 }
83 123
84 TEST(InputConversion, ValueError) { 124 TEST_F(InputConversionTest, ValueError) {
85 Err err; 125 Err err;
86 std::string input("\n [ \"a\", 5\nfoo bar"); 126 std::string input("\n [ \"a\", 5\nfoo bar");
87 Value result = ConvertInputToValue(input, NULL, Value(NULL, "value"), &err); 127 Value result = ConvertInputToValue(input, NULL, Value(NULL, "value"), &err);
88 EXPECT_TRUE(err.has_error()); 128 EXPECT_TRUE(err.has_error());
89 129
90 // Blocks not allowed. 130 // Blocks not allowed.
91 input = "{ foo = 5 }"; 131 input = "{ foo = 5 }";
92 result = ConvertInputToValue(input, NULL, Value(NULL, "value"), &err); 132 result = ConvertInputToValue(input, NULL, Value(NULL, "value"), &err);
93 EXPECT_TRUE(err.has_error()); 133 EXPECT_TRUE(err.has_error());
94 134
95 // Function calls not allowed. 135 // Function calls not allowed.
96 input = "print(5)"; 136 input = "print(5)";
97 result = ConvertInputToValue(input, NULL, Value(NULL, "value"), &err); 137 result = ConvertInputToValue(input, NULL, Value(NULL, "value"), &err);
98 EXPECT_TRUE(err.has_error()); 138 EXPECT_TRUE(err.has_error());
99 } 139 }
100 140
101 // Passing none or the empty string for input conversion should ignore the 141 // Passing none or the empty string for input conversion should ignore the
102 // result. 142 // result.
103 TEST(InputConversion, Ignore) { 143 TEST_F(InputConversionTest, Ignore) {
104 Err err; 144 Err err;
105 Value result = ConvertInputToValue("foo", NULL, Value(), &err); 145 Value result = ConvertInputToValue("foo", NULL, Value(), &err);
106 EXPECT_FALSE(err.has_error()); 146 EXPECT_FALSE(err.has_error());
107 EXPECT_EQ(Value::NONE, result.type()); 147 EXPECT_EQ(Value::NONE, result.type());
108 148
109 result = ConvertInputToValue("foo", NULL, Value(NULL, ""), &err); 149 result = ConvertInputToValue("foo", NULL, Value(NULL, ""), &err);
110 EXPECT_FALSE(err.has_error()); 150 EXPECT_FALSE(err.has_error());
111 EXPECT_EQ(Value::NONE, result.type()); 151 EXPECT_EQ(Value::NONE, result.type());
112 } 152 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698