| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // Note: This test relies on LF line endings in the source file. |
| |
| import "package:expect/expect.dart"; |
| |
| main() { |
| { |
| // Generates identical compile time constants. |
| var s1 = "abcdefgh"; |
| var s2 = |
| "abcd" |
| "efgh"; |
| var s3 = |
| "ab" |
| "cd" |
| "ef" |
| "gh"; |
| var s4 = |
| "a" |
| "b" |
| "c" |
| "d" |
| "e" |
| "f" |
| "g" |
| "h"; |
| var s5 = |
| "a" |
| 'b' |
| r"c" |
| r'd' |
| """e""" |
| '''f''' |
| r"""g""" |
| r'''h'''; |
| Expect.isTrue(identical(s1, s2)); |
| Expect.isTrue(identical(s1, s3)); |
| Expect.isTrue(identical(s1, s4)); |
| Expect.isTrue(identical(s1, s5)); |
| } |
| { |
| // Separating whitespace isn't necessary for the tokenizer. |
| var s1 = "abcdefgh"; |
| var s2 = |
| "abcd" |
| "efgh"; |
| var s3 = |
| "ab" |
| "cd" |
| "ef" |
| "gh"; |
| var s4 = |
| "a" |
| "b" |
| "c" |
| "d" |
| "e" |
| "f" |
| "g" |
| "h"; |
| var s5 = |
| "a" |
| 'b' |
| r"c" |
| r'd' |
| """e""" |
| '''f''' |
| r"""g""" |
| r'''h'''; |
| Expect.isTrue(identical(s1, s2)); |
| Expect.isTrue(identical(s1, s3)); |
| Expect.isTrue(identical(s1, s4)); |
| Expect.isTrue(identical(s1, s5)); |
| // "a""""""b""" should be tokenized as "a" """""b""", aka. "a" '""b'. |
| Expect.isTrue( |
| identical( |
| 'a""b', |
| "a" |
| """""b""", |
| ), |
| ); |
| // """a""""""""b""" is 'a' '""b'. |
| Expect.isTrue( |
| identical( |
| 'a""b', |
| """a""" |
| """""b""", |
| ), |
| ); |
| // Raw strings. |
| Expect.isTrue( |
| identical( |
| 'ab', |
| "a" |
| r"b", |
| ), |
| ); |
| Expect.isTrue( |
| identical( |
| 'ab', |
| r"a" |
| "b", |
| ), |
| ); |
| Expect.isTrue( |
| identical( |
| 'ab', |
| r"a" |
| r"b", |
| ), |
| ); |
| } |
| |
| // Newlines are just whitespace. |
| var ms1 = |
| "abc" |
| "def" |
| "ghi" |
| "jkl"; |
| Expect.isTrue(identical("abcdefghijkl", ms1)); |
| |
| // Works with multiline strings too. |
| var ms2 = |
| """abc |
| def""" |
| """ |
| ghi |
| jkl |
| """; |
| Expect.isTrue( |
| identical("abc\n def ghi\n jkl\n ", ms2), |
| "Multiline: $ms2", |
| ); |
| |
| // Binds stronger than property access (it's considered one literal). |
| Expect.equals( |
| 5, |
| "ab" |
| "cde" |
| .length, |
| "Associativity", |
| ); |
| |
| // Check that interpolations are handled correctly. |
| { |
| var x = "foo"; |
| var y = 42; |
| var z = true; |
| String e1 = "$x$y$z"; |
| Expect.equals( |
| e1, |
| "$x" |
| "$y$z", |
| ); |
| Expect.equals( |
| e1, |
| "$x$y" |
| "$z", |
| ); |
| Expect.equals( |
| e1, |
| "$x" |
| "$y" |
| "$z", |
| ); |
| String e2 = "-$x-$y-$z-"; |
| Expect.equals( |
| e2, |
| "-" |
| "$x" |
| "-" |
| "$y" |
| "-" |
| "$z" |
| "-", |
| "a", |
| ); |
| Expect.equals( |
| e2, |
| "-$x" |
| "-" |
| "$y" |
| "-" |
| "$z" |
| "-", |
| "b", |
| ); |
| Expect.equals( |
| e2, |
| "-" |
| "$x-" |
| "$y" |
| "-" |
| "$z" |
| "-", |
| "c", |
| ); |
| Expect.equals( |
| e2, |
| "-" |
| "$x" |
| "-$y" |
| "-" |
| "$z" |
| "-", |
| "d", |
| ); |
| Expect.equals( |
| e2, |
| "-" |
| "$x" |
| "-" |
| "$y-" |
| "$z" |
| "-", |
| "e", |
| ); |
| Expect.equals( |
| e2, |
| "-" |
| "$x" |
| "-" |
| "$y" |
| "-$z" |
| "-", |
| "f", |
| ); |
| Expect.equals( |
| e2, |
| "-" |
| "$x" |
| "-" |
| "$y" |
| "-" |
| "$z-", |
| "g", |
| ); |
| Expect.equals( |
| e2, |
| "-" |
| "$x-$y" |
| "-" |
| "$z" |
| "-", |
| "h", |
| ); |
| Expect.equals( |
| e2, |
| "-" |
| "$x-$y-$z" |
| "-", |
| "i", |
| ); |
| |
| Expect.equals( |
| "-$x-$y-", |
| "-" |
| "$x" |
| "-" |
| "$y" |
| "-", |
| ); |
| Expect.equals( |
| "-$x-$y", |
| "-" |
| "$x" |
| "-" |
| "$y", |
| ); |
| Expect.equals( |
| "-$x$y-", |
| "-" |
| "$x" |
| "$y" |
| "-", |
| ); |
| Expect.equals( |
| "$x-$y-", |
| "$x" |
| "-" |
| "$y" |
| "-", |
| ); |
| |
| Expect.equals( |
| "$x$y", |
| "$x" |
| "$y", |
| ); |
| Expect.equals( |
| "$x$y", |
| "$x" |
| "" |
| "$y", |
| ); |
| Expect.equals( |
| "$x$y", |
| "$x" |
| "" |
| "" |
| "$y", |
| ); |
| Expect.equals( |
| "$x-$y", |
| "$x" |
| "-" |
| "$y", |
| ); |
| Expect.equals( |
| "$x-$y", |
| "$x" |
| "-" |
| "" |
| "$y", |
| ); |
| Expect.equals( |
| "$x-$y", |
| "$x" |
| "" |
| "-" |
| "$y", |
| ); |
| Expect.equals( |
| "$x-$y", |
| "$x" |
| "" |
| "-" |
| "" |
| "$y", |
| ); |
| |
| Expect.equals( |
| "$x--$y", |
| "$x" |
| "-" |
| "-" |
| "$y", |
| ); |
| Expect.equals( |
| "$x--$y", |
| "$x" |
| "-" |
| "-" |
| "" |
| "$y", |
| ); |
| Expect.equals( |
| "$x--$y", |
| "$x" |
| "-" |
| "" |
| "-" |
| "$y", |
| ); |
| Expect.equals( |
| "$x--$y", |
| "$x" |
| "" |
| "-" |
| "-" |
| "$y", |
| ); |
| |
| Expect.equals( |
| "$x---$y", |
| "$x" |
| "-" |
| "-" |
| "-" |
| "$y", |
| ); |
| Expect.equals( |
| "$x---", |
| "$x" |
| "-" |
| "-" |
| "-", |
| ); |
| Expect.equals( |
| "---$y", |
| "-" |
| "-" |
| "-" |
| "$y", |
| ); |
| |
| Expect.equals( |
| "$x-$y-$z", |
| "${'$x' |
| '-' |
| '$y'}" |
| "-" |
| "$z", |
| ); |
| |
| Expect.equals( |
| r"-foo-42-true-", |
| r"-" |
| "$x" |
| r"""-""" |
| """$y""" |
| r'-' |
| '$z' |
| r'''-''', |
| "j", |
| ); |
| Expect.equals( |
| r"-$x-42-true-", |
| r"-" |
| r"$x" |
| r"""-""" |
| """$y""" |
| r'-' |
| '$z' |
| r'''-''', |
| "k", |
| ); |
| Expect.equals( |
| r"-foo-$y-true-", |
| r"-" |
| "$x" |
| r"""-""" |
| r"""$y""" |
| r'-' |
| '$z' |
| r'''-''', |
| "l", |
| ); |
| Expect.equals( |
| r"-foo-42-$z-", |
| r"-" |
| "$x" |
| r"""-""" |
| """$y""" |
| r'-' |
| r'$z' |
| r'''-''', |
| "m", |
| ); |
| } |
| } |