OLD | NEW |
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 <iostream> | 5 #include <iostream> |
6 #include <sstream> | 6 #include <sstream> |
7 | 7 |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 #include "tools/gn/input_file.h" | 9 #include "tools/gn/input_file.h" |
10 #include "tools/gn/parser.h" | 10 #include "tools/gn/parser.h" |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 " FUNCTION(print)\n" | 174 " FUNCTION(print)\n" |
175 " LIST\n" | 175 " LIST\n" |
176 " LITERAL(\"hai\")\n"; | 176 " LITERAL(\"hai\")\n"; |
177 DoParserPrintTest(input, expected); | 177 DoParserPrintTest(input, expected); |
178 } | 178 } |
179 | 179 |
180 TEST(Parser, UnaryOp) { | 180 TEST(Parser, UnaryOp) { |
181 DoExpressionPrintTest("!foo", | 181 DoExpressionPrintTest("!foo", |
182 "UNARY(!)\n" | 182 "UNARY(!)\n" |
183 " IDENTIFIER(foo)\n"); | 183 " IDENTIFIER(foo)\n"); |
| 184 |
| 185 // No contents for binary operator. |
| 186 DoExpressionErrorTest("a = !", 1, 5); |
184 } | 187 } |
185 | 188 |
186 TEST(Parser, List) { | 189 TEST(Parser, List) { |
187 DoExpressionPrintTest("[]", "LIST\n"); | 190 DoExpressionPrintTest("[]", "LIST\n"); |
188 DoExpressionPrintTest("[1,asd,]", | 191 DoExpressionPrintTest("[1,asd,]", |
189 "LIST\n" | 192 "LIST\n" |
190 " LITERAL(1)\n" | 193 " LITERAL(1)\n" |
191 " IDENTIFIER(asd)\n"); | 194 " IDENTIFIER(asd)\n"); |
192 DoExpressionPrintTest("[1, 2+3 - foo]", | 195 DoExpressionPrintTest("[1, 2+3 - foo]", |
193 "LIST\n" | 196 "LIST\n" |
(...skipping 14 matching lines...) Expand all Loading... |
208 DoExpressionErrorTest("[,]", 1, 2); | 211 DoExpressionErrorTest("[,]", 1, 2); |
209 DoExpressionErrorTest("[a,,]", 1, 4); | 212 DoExpressionErrorTest("[a,,]", 1, 4); |
210 } | 213 } |
211 | 214 |
212 TEST(Parser, Assignment) { | 215 TEST(Parser, Assignment) { |
213 DoParserPrintTest("a=2", | 216 DoParserPrintTest("a=2", |
214 "BLOCK\n" | 217 "BLOCK\n" |
215 " BINARY(=)\n" | 218 " BINARY(=)\n" |
216 " IDENTIFIER(a)\n" | 219 " IDENTIFIER(a)\n" |
217 " LITERAL(2)\n"); | 220 " LITERAL(2)\n"); |
| 221 |
| 222 DoExpressionErrorTest("a = ", 1, 3); |
218 } | 223 } |
219 | 224 |
220 TEST(Parser, Accessor) { | 225 TEST(Parser, Accessor) { |
221 // Accessor indexing. | 226 // Accessor indexing. |
222 DoParserPrintTest("a=b[c+2]", | 227 DoParserPrintTest("a=b[c+2]", |
223 "BLOCK\n" | 228 "BLOCK\n" |
224 " BINARY(=)\n" | 229 " BINARY(=)\n" |
225 " IDENTIFIER(a)\n" | 230 " IDENTIFIER(a)\n" |
226 " ACCESSOR\n" | 231 " ACCESSOR\n" |
227 " b\n" // AccessorNode is a bit weird in that it holds | 232 " b\n" // AccessorNode is a bit weird in that it holds |
(...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
697 // freestanding block. | 702 // freestanding block. |
698 TEST(Parser, StandaloneBlock) { | 703 TEST(Parser, StandaloneBlock) { |
699 DoParserErrorTest( | 704 DoParserErrorTest( |
700 "if (true) {\n" | 705 "if (true) {\n" |
701 "}\n" | 706 "}\n" |
702 "{\n" | 707 "{\n" |
703 " assert(false)\n" | 708 " assert(false)\n" |
704 "}\n", | 709 "}\n", |
705 3, 1); | 710 3, 1); |
706 } | 711 } |
OLD | NEW |