OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 import "package:expect/expect.dart"; | 5 import "package:expect/expect.dart"; |
6 import 'dart:math'; | 6 import 'dart:math'; |
7 | 7 |
8 // Test that String interpolation works in some optimized cases. | 8 // Test that String interpolation works in some optimized cases. |
9 | 9 |
10 bool get inscrutableFalse => new Random().nextDouble() > 2; | 10 bool get inscrutableFalse => new Random().nextDouble() > 2; |
11 | 11 |
12 returnsNullOrString(x) { | 12 returnsNullOrString(x) { |
13 if (inscrutableFalse) return 'hi'; | 13 if (inscrutableFalse) return 'hi'; |
14 if (inscrutableFalse) return null; | 14 if (inscrutableFalse) return null; |
15 return x; | 15 return x; |
16 } | 16 } |
17 | 17 |
18 returnsNullOrInt(x) { | 18 returnsNullOrInt(x) { |
19 if (inscrutableFalse) return 123; | 19 if (inscrutableFalse) return 123; |
20 if (inscrutableFalse) return null; | 20 if (inscrutableFalse) return null; |
21 return x; | 21 return x; |
22 } | 22 } |
23 | 23 |
24 spoil(a) { | 24 spoil(a) { |
25 a[3] = 123; | 25 a[3] = 123; |
26 a[4] = 'ddd'; | 26 a[4] = 'ddd'; |
27 } | 27 } |
28 | 28 |
29 void testString() { | 29 void testString() { |
30 var a = new List(100); // 'null' values in here are JavaScript undefined. | 30 var a = new List(100); // 'null' values in here are JavaScript undefined. |
31 spoil(a); | 31 spoil(a); |
32 var s = returnsNullOrString('hi'); | 32 var s = returnsNullOrString('hi'); |
33 var x = a[2]; | 33 var x = a[2]; |
34 if (x == null) { | 34 if (x == null) { |
35 s = returnsNullOrString(x); | 35 s = returnsNullOrString(x); |
36 } | 36 } |
37 | 37 |
38 Expect.equals('s: null', 's: $s'); | 38 Expect.equals('s: null', 's: $s'); |
39 } | 39 } |
40 | 40 |
41 void testInt() { | 41 void testInt() { |
42 var a = new List(100); // 'null' values in here are JavaScript undefined. | 42 var a = new List(100); // 'null' values in here are JavaScript undefined. |
43 spoil(a); | 43 spoil(a); |
44 var s = returnsNullOrInt(123); | 44 var s = returnsNullOrInt(123); |
45 var x = a[2]; | 45 var x = a[2]; |
46 if (x == null) { | 46 if (x == null) { |
47 s = returnsNullOrInt(x); | 47 s = returnsNullOrInt(x); |
48 } | 48 } |
49 | 49 |
50 Expect.equals('s: null', 's: $s'); | 50 Expect.equals('s: null', 's: $s'); |
51 } | 51 } |
52 | 52 |
53 void main() { | 53 void main() { |
54 testInt(); | 54 testInt(); |
55 testString(); | 55 testString(); |
56 } | 56 } |
OLD | NEW |