| // Copyright (c) 2011, 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. |
| // Dart test program testing string interpolation of expressions. |
| |
| // @dart = 2.9 |
| |
| import "package:expect/expect.dart"; |
| |
| class StringInterpolate2Test { |
| static var F1; |
| |
| static void testMain() { |
| F1 = "1 + 5 = ${1+5}"; |
| |
| Expect.equals("1 + 5 = 6", F1); |
| |
| var fib = [1, 1, 2, 3, 5, 8, 13, 21]; |
| |
| var i = 5; |
| var s = "${i}"; |
| Expect.equals("5", s); |
| |
| s = "fib(${i}) = ${fib[i]}"; |
| Expect.equals("fib(5) = 8", s); |
| |
| i = 5; |
| s = "$i squared is ${((x) => x*x)(i)}"; |
| Expect.equals("5 squared is 25", s); |
| |
| Expect.equals("8", "${fib.length}"); |
| // test single quote |
| Expect.equals("8", '${fib.length}'); |
| // test multi-line |
| Expect.equals( |
| "8", |
| '${fib. |
| length}'); |
| |
| var map = {"red": 1, "green": 2, "blue": 3}; |
| s = "green has value ${map["green"]}"; |
| Expect.equals("green has value 2", s); |
| |
| i = 0; |
| b() => "${++i}"; |
| s = "aaa ${"bbb ${b()} bbb"} aaa ${b()}"; |
| Expect.equals("aaa bbb 1 bbb aaa 2", s); |
| |
| // test multiple levels of nesting, including changing quotes and |
| // multiline string types |
| s = "a ${(){ return 'b ${(){ return """ |
| c""";}()}'; }()} d"; |
| Expect.equals("a b c d", s); |
| } |
| } |
| |
| main() { |
| StringInterpolate2Test.testMain(); |
| } |