OLD | NEW |
| (Empty) |
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 | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 main() { | |
6 { | |
7 // Generates identical compile time constants. | |
8 var s1 = "abcdefgh"; | |
9 var s2 = "abcd" "efgh"; | |
10 var s3 = "ab" "cd" "ef" "gh"; | |
11 var s4 = "a" "b" "c" "d" "e" "f" "g" "h"; | |
12 var s5 = "a" 'b' @"c" @'d' """e""" '''f''' @"""g""" @'''h'''; | |
13 Expect.isTrue(s1 === s2); | |
14 Expect.isTrue(s1 === s3); | |
15 Expect.isTrue(s1 === s4); | |
16 Expect.isTrue(s1 === s5); | |
17 } | |
18 { | |
19 // Separating whitespace isn't necessary for the tokenizer. | |
20 var s1 = "abcdefgh"; | |
21 var s2 = "abcd""efgh"; | |
22 var s3 = "ab""cd""ef""gh"; | |
23 var s4 = "a""b""c""d""e""f""g""h"; | |
24 var s5 = "a"'b'@"c"@'d'"""e"""'''f'''@"""g"""@'''h'''; | |
25 Expect.isTrue(s1 === s2); | |
26 Expect.isTrue(s1 === s3); | |
27 Expect.isTrue(s1 === s4); | |
28 Expect.isTrue(s1 === s5); | |
29 // "a""""""b""" should be tokenized as "a" """""b""", aka. "a" '""b'. | |
30 Expect.isTrue('a""b' === "a""""""b"""); | |
31 // """a""""""""b""" is 'a' '""b'. | |
32 Expect.isTrue('a""b' === """a""""""""b"""); | |
33 // Raw strings. | |
34 Expect.isTrue('ab' === "a"@"b"); | |
35 Expect.isTrue('ab' === @"a""b"); | |
36 Expect.isTrue('ab' === @"a"@"b"); | |
37 } | |
38 | |
39 // Newlines are just whitespace. | |
40 var ms1 = "abc" | |
41 "def" | |
42 "ghi" | |
43 "jkl"; | |
44 Expect.isTrue("abcdefghijkl" === ms1); | |
45 | |
46 // Works with multiline strings too. | |
47 var ms2 = """abc | |
48 def""" | |
49 """ | |
50 ghi | |
51 jkl | |
52 """; | |
53 Expect.isTrue("abc\n def ghi\n jkl\n " === ms2, "Multiline: $ms2"); | |
54 | |
55 // Binds stronger than property access (it's considered one literal). | |
56 Expect.equals(5, "ab" "cde".length, "Associativity"); | |
57 | |
58 // Check that interpolations are handled correctly. | |
59 { | |
60 var x = "foo"; | |
61 var y = 42; | |
62 var z = true; | |
63 String e1 = "$x$y$z"; | |
64 Expect.equals(e1, "$x" "$y$z"); | |
65 Expect.equals(e1, "$x$y" "$z"); | |
66 Expect.equals(e1, "$x" "$y" "$z"); | |
67 String e2 = "-$x-$y-$z-"; | |
68 Expect.equals(e2, "-" "$x" "-" "$y" "-" "$z" "-", "a"); | |
69 Expect.equals(e2, "-$x" "-" "$y" "-" "$z" "-", "b"); | |
70 Expect.equals(e2, "-" "$x-" "$y" "-" "$z" "-", "c"); | |
71 Expect.equals(e2, "-" "$x" "-$y" "-" "$z" "-", "d"); | |
72 Expect.equals(e2, "-" "$x" "-" "$y-" "$z" "-", "e"); | |
73 Expect.equals(e2, "-" "$x" "-" "$y" "-$z" "-", "f"); | |
74 Expect.equals(e2, "-" "$x" "-" "$y" "-" "$z-", "g"); | |
75 Expect.equals(e2, "-" "$x-$y" "-" "$z" "-", "h"); | |
76 Expect.equals(e2, "-" "$x-$y-$z" "-", "i"); | |
77 | |
78 Expect.equals("-$x-$y-", "-" "$x" "-" "$y" "-"); | |
79 Expect.equals("-$x-$y", "-" "$x" "-" "$y"); | |
80 Expect.equals("-$x$y-", "-" "$x" "$y" "-"); | |
81 Expect.equals("$x-$y-", "$x" "-" "$y" "-"); | |
82 | |
83 Expect.equals("$x$y", "$x" "$y"); | |
84 Expect.equals("$x$y", "$x" "" "$y"); | |
85 Expect.equals("$x$y", "$x" "" "" "$y"); | |
86 Expect.equals("$x-$y", "$x" "-" "$y"); | |
87 Expect.equals("$x-$y", "$x" "-" "" "$y"); | |
88 Expect.equals("$x-$y", "$x" "" "-" "$y"); | |
89 Expect.equals("$x-$y", "$x" "" "-" "" "$y"); | |
90 | |
91 Expect.equals("$x--$y", "$x" "-" "-" "$y"); | |
92 Expect.equals("$x--$y", "$x" "-" "-" "" "$y"); | |
93 Expect.equals("$x--$y", "$x" "-" "" "-" "$y"); | |
94 Expect.equals("$x--$y", "$x" "" "-" "-" "$y"); | |
95 | |
96 Expect.equals("$x---$y", "$x" "-" "-" "-" "$y"); | |
97 Expect.equals("$x---", "$x" "-" "-" "-"); | |
98 Expect.equals("---$y", "-" "-" "-" "$y"); | |
99 | |
100 Expect.equals("$x-$y-$z", "${'$x' '-' '$y'}" "-" "$z"); | |
101 | |
102 Expect.equals(@"-foo-42-true-", | |
103 @"-" "$x" @"""-""" """$y""" @'-' '$z' @'''-''', "j"); | |
104 Expect.equals(@"-$x-42-true-", | |
105 @"-" @"$x" @"""-""" """$y""" @'-' '$z' @'''-''', "k"); | |
106 Expect.equals(@"-foo-$y-true-", | |
107 @"-" "$x" @"""-""" @"""$y""" @'-' '$z' @'''-''', "l"); | |
108 Expect.equals(@"-foo-42-$z-", | |
109 @"-" "$x" @"""-""" """$y""" @'-' @'$z' @'''-''', "m"); | |
110 } | |
111 } | |
OLD | NEW |