OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 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 | 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 of Symbol class for operators.. | 5 // Test of Symbol class for operators.. |
6 | 6 |
7 var $ = new Symbolize(); | 7 var $ = new Symbolize(); |
8 | 8 |
9 main() { | 9 main() { |
10 testSymbol(#+, $ + $, "+"); | 10 testSymbol(#+, $+$, "+"); |
11 testSymbol(#-, $ - $, "-"); | 11 testSymbol(#-, $-$, "-"); |
12 testSymbol(#*, $ * $, "*"); | 12 testSymbol(#*, $*$, "*"); |
13 testSymbol(#/, $ / $, "/"); | 13 testSymbol(#/, $/$, "/"); |
14 testSymbol(#~/, $ ~/ $, "~/"); | 14 testSymbol(#~/, $~/$, "~/"); |
15 testSymbol(#%, $ % $, "%"); | 15 testSymbol(#%, $%$, "%"); |
16 testSymbol(#<<, $ << $, "<<"); | 16 testSymbol(#<<, $<<$, "<<"); |
17 testSymbol(#>>, $ >> $, ">>"); | 17 testSymbol(#>>, $>>$, ">>"); |
18 testSymbol(#~, ~$, "~"); | 18 testSymbol(#~, ~$, "~"); |
19 testSymbol(#|, $ | $, "|"); | 19 testSymbol(#|, $|$, "|"); |
20 testSymbol(#&, $ & $, "&"); | 20 testSymbol(#&, $&$, "&"); |
21 testSymbol(#^, $ ^ $, "^"); | 21 testSymbol(#^, $^$, "^"); |
22 testSymbol(#<, $ < $, "<"); | 22 testSymbol(#<, $<$, "<"); |
23 testSymbol(#<=, $ <= $, "<="); | 23 testSymbol(#<=, $<=$, "<="); |
24 testSymbol(#>, $ > $, ">"); | 24 testSymbol(#>, $>$, ">"); |
25 testSymbol(#>=, $ >= $, ">="); | 25 testSymbol(#>=, $>=$, ">="); |
26 testSymbol(#==, new Symbol("=="), "=="); // Can't hit noSuchMethod. | 26 testSymbol(#==, new Symbol("=="), "=="); // Can't hit noSuchMethod. |
27 testSymbol(#[], $[$], "[]"); | 27 testSymbol(#[], $[$], "[]"); |
28 testSymbol(#[]=, ($[$] = $).lastMember, "[]="); | 28 testSymbol(#[]=, ($[$]=$).lastMember, "[]="); |
29 testSymbol(const Symbol("unary-"), -$, "unary-"); | 29 testSymbol(const Symbol("unary-"), -$, "unary-"); |
30 | 30 |
31 testSymbolThrows(">>>"); // //# 03: ok | 31 testSymbolThrows(">>>"); // //# 03: ok |
32 testSymbolThrows("!"); // //# 03: continued | 32 testSymbolThrows("!"); // //# 03: continued |
33 testSymbolThrows("&&"); // //# 03: continued | 33 testSymbolThrows("&&"); // //# 03: continued |
34 testSymbolThrows("||"); // //# 03: continued | 34 testSymbolThrows("||"); // //# 03: continued |
35 testSymbolThrows("?"); // //# 03: continued | 35 testSymbolThrows("?"); // //# 03: continued |
36 testSymbolThrows("?:"); // //# 03: continued | 36 testSymbolThrows("?:"); // //# 03: continued |
37 testSymbolThrows("#"); // //# 03: continued | 37 testSymbolThrows("#"); // //# 03: continued |
38 testSymbolThrows("//"); // //# 03: continued | 38 testSymbolThrows("//"); // //# 03: continued |
39 } | 39 } |
40 | 40 |
41 void testSymbol(Symbol constSymbol, var mirrorSymbol, String name) { | 41 void testSymbol(Symbol constSymbol, var mirrorSymbol, String name) { |
42 Symbol dynamicSymbol = new Symbol(name); | 42 Symbol dynamicSymbol = new Symbol(name); |
43 if (constSymbol != mirrorSymbol) { | 43 if (constSymbol != mirrorSymbol) { |
44 throw "Not equal #$name, \$$name: $constSymbol, $mirrorSymbol"; | 44 throw "Not equal #$name, \$$name: $constSymbol, $mirrorSymbol"; |
45 } | 45 } |
46 if (constSymbol != dynamicSymbol) { | 46 if (constSymbol != dynamicSymbol) { |
47 throw "Not equal #$name, new Symbol('$name'): $constSymbol, $dynamicSymbol"; | 47 throw "Not equal #$name, new Symbol('$name'): $constSymbol, $dynamicSymbol"; |
48 } | 48 } |
49 if (mirrorSymbol != dynamicSymbol) { | 49 if (mirrorSymbol != dynamicSymbol) { |
50 throw "Not equal \$$name, new Symbol('$name'): " | 50 throw "Not equal \$$name, new Symbol('$name'): " |
51 "$mirrorSymbol, $dynamicSymbol"; | 51 "$mirrorSymbol, $dynamicSymbol"; |
52 } | 52 } |
53 if (constSymbol.hashCode != mirrorSymbol.hashCode) { | 53 if (constSymbol.hashCode != mirrorSymbol.hashCode) { |
54 throw "HashCode not equal #$name, \$$name: $constSymbol, $mirrorSymbol"; | 54 throw "HashCode not equal #$name, \$$name: $constSymbol, $mirrorSymbol"; |
55 } | 55 } |
56 if (constSymbol.hashCode != dynamicSymbol.hashCode) { | 56 if (constSymbol.hashCode != dynamicSymbol.hashCode) { |
57 throw "HashCode not equal #$name, new Symbol('$name'): " | 57 throw "HashCode not equal #$name, new Symbol('$name'): " |
58 "$constSymbol, $dynamicSymbol"; | 58 "$constSymbol, $dynamicSymbol"; |
59 } | 59 } |
60 if (mirrorSymbol.hashCode != dynamicSymbol.hashCode) { | 60 if (mirrorSymbol.hashCode != dynamicSymbol.hashCode) { |
61 throw "HashCode not equal \$$name, new Symbol('$name'): " | 61 throw "HashCode not equal \$$name, new Symbol('$name'): " |
62 "$mirrorSymbol, $dynamicSymbol"; | 62 "$mirrorSymbol, $dynamicSymbol"; |
63 } | 63 } |
64 } | 64 } |
65 | 65 |
66 void testSymbolThrows(name) { | 66 void testSymbolThrows(name) { |
67 bool fails = false; | 67 bool fails = false; |
68 try { | 68 try { |
69 new Symbol(name); | 69 new Symbol(name); |
70 } catch (e) { | 70 } catch (e) { |
71 fails = true; | 71 fails = true; |
72 } | 72 } |
73 if (!fails) { | 73 if (!fails) { |
74 throw "Didn't throw: $name"; | 74 throw "Didn't throw: $name"; |
75 } | 75 } |
76 } | 76 } |
77 | 77 |
78 class Symbolize { | 78 class Symbolize { |
79 Symbol lastMember; | 79 Symbol lastMember; |
80 noSuchMethod(m) => lastMember = m.memberName; | 80 noSuchMethod(m) => lastMember = m.memberName; |
81 } | 81 } |
OLD | NEW |