OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "platform/assert.h" | 5 #include "platform/assert.h" |
6 #include "vm/os.h" | 6 #include "vm/os.h" |
7 #include "vm/scanner.h" | 7 #include "vm/scanner.h" |
8 #include "vm/token.h" | 8 #include "vm/token.h" |
9 #include "vm/unit_test.h" | 9 #include "vm/unit_test.h" |
10 | 10 |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 EXPECT_EQ(' ', litchars[1]); | 185 EXPECT_EQ(' ', litchars[1]); |
186 EXPECT_EQ('\\', litchars[2]); | 186 EXPECT_EQ('\\', litchars[2]); |
187 EXPECT_EQ('\n', litchars[4]); | 187 EXPECT_EQ('\n', litchars[4]); |
188 EXPECT_EQ('\r', litchars[5]); | 188 EXPECT_EQ('\r', litchars[5]); |
189 EXPECT_EQ('\t', litchars[6]); | 189 EXPECT_EQ('\t', litchars[6]); |
190 EXPECT_EQ('\'', litchars[8]); | 190 EXPECT_EQ('\'', litchars[8]); |
191 } | 191 } |
192 | 192 |
193 | 193 |
194 static void InvalidStringEscapes() { | 194 static void InvalidStringEscapes() { |
195 const GrowableTokenStream& high_start_4 = | |
196 Scan("\"\\uD800\""); | |
197 EXPECT_EQ(2, high_start_4.length()); | |
198 CheckKind(high_start_4, 0, Token::kERROR); | |
199 EXPECT(high_start_4[0].literal->Equals("invalid code point")); | |
200 CheckKind(high_start_4, 1, Token::kEOS); | |
201 | |
202 const GrowableTokenStream& high_start_seq = | |
203 Scan("\"\\u{D800}\""); | |
204 EXPECT_EQ(2, high_start_seq.length()); | |
205 CheckKind(high_start_seq, 0, Token::kERROR); | |
206 EXPECT(high_start_seq[0].literal->Equals("invalid code point")); | |
207 CheckKind(high_start_seq, 1, Token::kEOS); | |
208 | |
209 const GrowableTokenStream& high_end_4 = | |
210 Scan("\"\\uDBFF\""); | |
211 EXPECT_EQ(2, high_end_4.length()); | |
212 CheckKind(high_end_4, 0, Token::kERROR); | |
213 EXPECT(high_end_4[0].literal->Equals("invalid code point")); | |
214 CheckKind(high_end_4, 1, Token::kEOS); | |
215 | |
216 const GrowableTokenStream& high_end_seq = | |
217 Scan("\"\\u{DBFF}\""); | |
218 EXPECT_EQ(2, high_end_seq.length()); | |
219 CheckKind(high_end_seq, 0, Token::kERROR); | |
220 EXPECT(high_end_seq[0].literal->Equals("invalid code point")); | |
221 CheckKind(high_end_seq, 1, Token::kEOS); | |
222 | |
223 const GrowableTokenStream& low_start_4 = | |
224 Scan("\"\\uDC00\""); | |
225 EXPECT_EQ(2, low_start_4.length()); | |
226 CheckKind(low_start_4, 0, Token::kERROR); | |
227 EXPECT(low_start_4[0].literal->Equals("invalid code point")); | |
228 CheckKind(low_start_4, 1, Token::kEOS); | |
229 | |
230 const GrowableTokenStream& low_start_seq = | |
231 Scan("\"\\u{DC00}\""); | |
232 EXPECT_EQ(2, low_start_seq.length()); | |
233 CheckKind(low_start_seq, 0, Token::kERROR); | |
234 EXPECT(low_start_seq[0].literal->Equals("invalid code point")); | |
235 CheckKind(low_start_seq, 1, Token::kEOS); | |
236 | |
237 const GrowableTokenStream& low_end_4 = | |
238 Scan("\"\\uDFFF\""); | |
239 EXPECT_EQ(2, low_end_4.length()); | |
240 CheckKind(low_end_4, 0, Token::kERROR); | |
241 EXPECT(low_end_4[0].literal->Equals("invalid code point")); | |
242 CheckKind(low_end_4, 1, Token::kEOS); | |
243 | |
244 const GrowableTokenStream& low_end_seq = | |
245 Scan("\"\\u{DFFF}\""); | |
246 EXPECT_EQ(2, low_end_seq.length()); | |
247 CheckKind(low_end_seq, 0, Token::kERROR); | |
248 EXPECT(low_end_seq[0].literal->Equals("invalid code point")); | |
249 CheckKind(low_end_seq, 1, Token::kEOS); | |
250 | |
251 const GrowableTokenStream& out_of_range_low = | 195 const GrowableTokenStream& out_of_range_low = |
252 Scan("\"\\u{110000}\""); | 196 Scan("\"\\u{110000}\""); |
253 EXPECT_EQ(2, out_of_range_low.length()); | 197 EXPECT_EQ(2, out_of_range_low.length()); |
254 CheckKind(out_of_range_low, 0, Token::kERROR); | 198 CheckKind(out_of_range_low, 0, Token::kERROR); |
255 EXPECT(out_of_range_low[0].literal->Equals("invalid code point")); | 199 EXPECT(out_of_range_low[0].literal->Equals("invalid code point")); |
256 CheckKind(out_of_range_low, 1, Token::kEOS); | 200 CheckKind(out_of_range_low, 1, Token::kEOS); |
257 | 201 |
258 const GrowableTokenStream& out_of_range_high = | 202 const GrowableTokenStream& out_of_range_high = |
259 Scan("\"\\u{FFFFFF}\""); | 203 Scan("\"\\u{FFFFFF}\""); |
260 EXPECT_EQ(2, out_of_range_high.length()); | 204 EXPECT_EQ(2, out_of_range_high.length()); |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
474 RawString(); | 418 RawString(); |
475 MultilineString(); | 419 MultilineString(); |
476 EmptyString(); | 420 EmptyString(); |
477 EmptyMultilineString(); | 421 EmptyMultilineString(); |
478 NumberLiteral(); | 422 NumberLiteral(); |
479 InvalidText(); | 423 InvalidText(); |
480 NewlinesTest(); | 424 NewlinesTest(); |
481 } | 425 } |
482 | 426 |
483 } // namespace dart | 427 } // namespace dart |
OLD | NEW |