OLD | NEW |
| (Empty) |
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 | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 // Test that a final list literal is not expandable nor modifiable. | |
6 | |
7 class ConstListLiteralTest { | |
8 | |
9 static void testMain() { | |
10 var list = const [4, 2, 3]; | |
11 Expect.equals(3, list.length); | |
12 | |
13 var exception = null; | |
14 try { | |
15 list.add(4); | |
16 } catch (UnsupportedOperationException e) { | |
17 exception = e; | |
18 } | |
19 Expect.equals(true, exception != null); | |
20 Expect.equals(3, list.length); | |
21 exception = null; | |
22 | |
23 exception = null; | |
24 try { | |
25 list.addAll([4, 5]); | |
26 } catch (UnsupportedOperationException e) { | |
27 exception = e; | |
28 } | |
29 Expect.equals(true, exception != null); | |
30 Expect.equals(3, list.length); | |
31 | |
32 exception = null; | |
33 try { | |
34 list[0] = 0; | |
35 } catch (UnsupportedOperationException e) { | |
36 exception = e; | |
37 } | |
38 Expect.equals(true, exception != null); | |
39 Expect.equals(3, list.length); | |
40 | |
41 exception = null; | |
42 try { | |
43 list.sort((a, b) => a < b); | |
44 } catch (UnsupportedOperationException e) { | |
45 exception = e; | |
46 } | |
47 Expect.equals(true, exception != null); | |
48 Expect.equals(3, list.length); | |
49 Expect.equals(4, list[0]); | |
50 Expect.equals(2, list[1]); | |
51 Expect.equals(3, list[2]); | |
52 | |
53 exception = null; | |
54 try { | |
55 list.copyFrom([1], 0, 0, 1); | |
56 } catch (NoSuchMethodException e) { | |
57 // TODO(ahe): While we are resolving CL 9839101, we have two | |
58 // cases: the VMs implementation class has a method named | |
59 // copyFrom, dart2js does not. | |
60 exception = e; | |
61 } catch (UnsupportedOperationException e) { | |
62 exception = e; | |
63 } | |
64 Expect.equals(true, exception != null); | |
65 Expect.equals(3, list.length); | |
66 Expect.equals(4, list[0]); | |
67 Expect.equals(2, list[1]); | |
68 Expect.equals(3, list[2]); | |
69 | |
70 // Note: the next check is a regression test for frog. The immutable list | |
71 // overrides the 'length' property of List, but relies on using the native | |
72 // 'forEach' construct in Array. This test ensures that our strategy works | |
73 // correctly. | |
74 int x = 0; | |
75 list.forEach((e) { x += e; }); | |
76 Expect.equals(9, x); | |
77 } | |
78 } | |
79 | |
80 main() { | |
81 ConstListLiteralTest.testMain(); | |
82 } | |
OLD | NEW |