// 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.. dynamic $ = 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(Symbol.unaryMinus, -$, "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; }