Index: test/codegen/corelib/symbol_operator_test.dart |
diff --git a/test/codegen/corelib/symbol_operator_test.dart b/test/codegen/corelib/symbol_operator_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..981f44bedfe8f7838db4115dfc6041ad900d61de |
--- /dev/null |
+++ b/test/codegen/corelib/symbol_operator_test.dart |
@@ -0,0 +1,81 @@ |
+// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+// Test of Symbol class for operators.. |
+ |
+var $ = new Symbolize(); |
+ |
+main() { |
+ testSymbol(#+, $+$, "+"); |
+ testSymbol(#-, $-$, "-"); |
+ testSymbol(#*, $*$, "*"); |
+ testSymbol(#/, $/$, "/"); |
+ testSymbol(#~/, $~/$, "~/"); |
+ testSymbol(#%, $%$, "%"); |
+ testSymbol(#<<, $<<$, "<<"); |
+ testSymbol(#>>, $>>$, ">>"); |
+ testSymbol(#~, ~$, "~"); |
+ testSymbol(#|, $|$, "|"); |
+ testSymbol(#&, $&$, "&"); |
+ testSymbol(#^, $^$, "^"); |
+ testSymbol(#<, $<$, "<"); |
+ testSymbol(#<=, $<=$, "<="); |
+ testSymbol(#>, $>$, ">"); |
+ testSymbol(#>=, $>=$, ">="); |
+ testSymbol(#==, new Symbol("=="), "=="); // Can't hit noSuchMethod. |
+ testSymbol(#[], $[$], "[]"); |
+ testSymbol(#[]=, ($[$]=$).lastMember, "[]="); |
+ testSymbol(const Symbol("unary-"), -$, "unary-"); |
+ |
+ testSymbolThrows(">>>"); /// 03: ok |
+ testSymbolThrows("!"); /// 03: continued |
+ testSymbolThrows("&&"); /// 03: continued |
+ testSymbolThrows("||"); /// 03: continued |
+ testSymbolThrows("?"); /// 03: continued |
+ testSymbolThrows("?:"); /// 03: continued |
+ testSymbolThrows("#"); /// 03: continued |
+ testSymbolThrows("//"); /// 03: continued |
+} |
+ |
+void testSymbol(Symbol constSymbol, var mirrorSymbol, String name) { |
+ Symbol dynamicSymbol = new Symbol(name); |
+ if (constSymbol != mirrorSymbol) { |
+ throw "Not equal #$name, \$$name: $constSymbol, $mirrorSymbol"; |
+ } |
+ if (constSymbol != dynamicSymbol) { |
+ throw "Not equal #$name, new Symbol('$name'): $constSymbol, $dynamicSymbol"; |
+ } |
+ if (mirrorSymbol != dynamicSymbol) { |
+ throw "Not equal \$$name, new Symbol('$name'): " |
+ "$mirrorSymbol, $dynamicSymbol"; |
+ } |
+ if (constSymbol.hashCode != mirrorSymbol.hashCode) { |
+ throw "HashCode not equal #$name, \$$name: $constSymbol, $mirrorSymbol"; |
+ } |
+ if (constSymbol.hashCode != dynamicSymbol.hashCode) { |
+ throw "HashCode not equal #$name, new Symbol('$name'): " |
+ "$constSymbol, $dynamicSymbol"; |
+ } |
+ if (mirrorSymbol.hashCode != dynamicSymbol.hashCode) { |
+ throw "HashCode not equal \$$name, new Symbol('$name'): " |
+ "$mirrorSymbol, $dynamicSymbol"; |
+ } |
+} |
+ |
+void testSymbolThrows(name) { |
+ bool fails = false; |
+ try { |
+ new Symbol(name); |
+ } catch (e) { |
+ fails = true; |
+ } |
+ if (!fails) { |
+ throw "Didn't throw: $name"; |
+ } |
+} |
+ |
+class Symbolize { |
+ Symbol lastMember; |
+ noSuchMethod(m) => lastMember = m.memberName; |
+} |