OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 // Test that a final list literal is not expandable nor modifiable. | 5 // Test that a final list literal is not expandable nor modifiable. |
6 | 6 |
7 class ConstListLiteralTest { | 7 class ConstListLiteralTest { |
8 | 8 |
9 static void testMain() { | 9 static void testMain() { |
10 var list = const [4, 2, 3]; | 10 var list = const [4, 2, 3]; |
11 Expect.equals(3, list.length); | 11 Expect.equals(3, list.length); |
12 | 12 |
13 var exception = null; | 13 var exception = null; |
14 try { | 14 try { |
15 list.add(4); | 15 list.add(4); |
16 } catch (UnsupportedOperationException e) { | 16 } on UnsupportedOperationException catch (e) { |
17 exception = e; | 17 exception = e; |
18 } | 18 } |
19 Expect.equals(true, exception != null); | 19 Expect.equals(true, exception != null); |
20 Expect.equals(3, list.length); | 20 Expect.equals(3, list.length); |
21 exception = null; | 21 exception = null; |
22 | 22 |
23 exception = null; | 23 exception = null; |
24 try { | 24 try { |
25 list.addAll([4, 5]); | 25 list.addAll([4, 5]); |
26 } catch (UnsupportedOperationException e) { | 26 } on UnsupportedOperationException catch (e) { |
27 exception = e; | 27 exception = e; |
28 } | 28 } |
29 Expect.equals(true, exception != null); | 29 Expect.equals(true, exception != null); |
30 Expect.equals(3, list.length); | 30 Expect.equals(3, list.length); |
31 | 31 |
32 exception = null; | 32 exception = null; |
33 try { | 33 try { |
34 list[0] = 0; | 34 list[0] = 0; |
35 } catch (UnsupportedOperationException e) { | 35 } on UnsupportedOperationException catch (e) { |
36 exception = e; | 36 exception = e; |
37 } | 37 } |
38 Expect.equals(true, exception != null); | 38 Expect.equals(true, exception != null); |
39 Expect.equals(3, list.length); | 39 Expect.equals(3, list.length); |
40 | 40 |
41 exception = null; | 41 exception = null; |
42 try { | 42 try { |
43 list.sort((a, b) => a < b); | 43 list.sort((a, b) => a < b); |
44 } catch (UnsupportedOperationException e) { | 44 } on UnsupportedOperationException catch (e) { |
45 exception = e; | 45 exception = e; |
46 } | 46 } |
47 Expect.equals(true, exception != null); | 47 Expect.equals(true, exception != null); |
48 Expect.equals(3, list.length); | 48 Expect.equals(3, list.length); |
49 Expect.equals(4, list[0]); | 49 Expect.equals(4, list[0]); |
50 Expect.equals(2, list[1]); | 50 Expect.equals(2, list[1]); |
51 Expect.equals(3, list[2]); | 51 Expect.equals(3, list[2]); |
52 | 52 |
53 exception = null; | 53 exception = null; |
54 try { | 54 try { |
55 list.setRange(0, 1, [1], 0); | 55 list.setRange(0, 1, [1], 0); |
56 } catch (UnsupportedOperationException e) { | 56 } on UnsupportedOperationException catch (e) { |
57 exception = e; | 57 exception = e; |
58 } | 58 } |
59 Expect.equals(true, exception != null); | 59 Expect.equals(true, exception != null); |
60 Expect.equals(3, list.length); | 60 Expect.equals(3, list.length); |
61 Expect.equals(4, list[0]); | 61 Expect.equals(4, list[0]); |
62 Expect.equals(2, list[1]); | 62 Expect.equals(2, list[1]); |
63 Expect.equals(3, list[2]); | 63 Expect.equals(3, list[2]); |
64 | 64 |
65 // Note: the next check is a regression test for dart2js. The immutable list | 65 // Note: the next check is a regression test for dart2js. The immutable list |
66 // overrides the 'length' property of List, but relies on using the native | 66 // overrides the 'length' property of List, but relies on using the native |
67 // 'forEach' construct in Array. This test ensures that our strategy works | 67 // 'forEach' construct in Array. This test ensures that our strategy works |
68 // correctly. | 68 // correctly. |
69 int x = 0; | 69 int x = 0; |
70 list.forEach((e) { x += e; }); | 70 list.forEach((e) { x += e; }); |
71 Expect.equals(9, x); | 71 Expect.equals(9, x); |
72 } | 72 } |
73 } | 73 } |
74 | 74 |
75 main() { | 75 main() { |
76 ConstListLiteralTest.testMain(); | 76 ConstListLiteralTest.testMain(); |
77 } | 77 } |
OLD | NEW |