| 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;
|
| +}
|
|
|