OLD | NEW |
| (Empty) |
1 // Copyright (c) 2013, 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 // Basic test of Symbol class. | |
6 | |
7 main() { | |
8 var x; | |
9 print(x = const Symbol('fisk')); | |
10 | |
11 try { | |
12 print(const Symbol(0)); //# 01: compile-time error | |
13 } on NoSuchMethodError { | |
14 print('Caught NoSuchMethodError'); | |
15 } on TypeError { | |
16 print('Caught TypeError'); | |
17 } | |
18 | |
19 try { | |
20 print(const Symbol('0')); //# 02: compile-time error | |
21 } on ArgumentError catch (e) { | |
22 print('Caught $e'); | |
23 } | |
24 | |
25 try { | |
26 print(const Symbol('_')); //# 03: compile-time error | |
27 } on ArgumentError catch (e) { | |
28 print('Caught $e'); | |
29 } | |
30 | |
31 try { | |
32 var y = 0; | |
33 print(new Symbol(y)); | |
34 throw 'Expected a NoSuchMethodError or a TypeError'; | |
35 } on NoSuchMethodError { | |
36 print('Caught NoSuchMethodError'); | |
37 } on TypeError { | |
38 print('Caught TypeError'); | |
39 } | |
40 | |
41 try { | |
42 print(new Symbol('0')); | |
43 throw 'Expected an ArgumentError'; | |
44 } on ArgumentError catch (e) { | |
45 print('Caught $e'); | |
46 } | |
47 | |
48 try { | |
49 print(new Symbol('_')); | |
50 throw 'Expected an ArgumentError'; | |
51 } on ArgumentError catch (e) { | |
52 print('Caught $e'); | |
53 } | |
54 | |
55 if (!identical(const Symbol('fisk'), x)) { | |
56 throw 'Symbol constant is not canonicalized'; | |
57 } | |
58 | |
59 if (const Symbol('fisk') != x) { | |
60 throw 'Symbol constant is not equal to itself'; | |
61 } | |
62 | |
63 if (const Symbol('fisk') != new Symbol('fisk')) { | |
64 throw 'Symbol constant is not equal to its non-const equivalent'; | |
65 } | |
66 | |
67 if (new Symbol('fisk') != new Symbol('fisk')) { | |
68 throw 'new Symbol is not equal to its equivalent'; | |
69 } | |
70 | |
71 if (new Symbol('fisk') == new Symbol('hest')) { | |
72 throw 'unrelated Symbols are equal'; | |
73 } | |
74 | |
75 if (new Symbol('fisk') == new Object()) { | |
76 throw 'unrelated objects are equal'; | |
77 } | |
78 | |
79 x.hashCode as int; | |
80 | |
81 new Symbol('fisk').hashCode as int; | |
82 | |
83 if (new Symbol('fisk').hashCode != x.hashCode) { | |
84 throw "non-const Symbol's hashCode not equal to its const equivalent"; | |
85 } | |
86 | |
87 if (new Symbol('') != const Symbol('')) { | |
88 throw 'empty Symbol not equals to itself'; | |
89 } | |
90 } | |
OLD | NEW |