Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Unified Diff: test/codegen/lib/mirrors/operator_test.dart

Issue 2265533002: Add mirrors tests (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/codegen/lib/mirrors/null_test.dart ('k') | test/codegen/lib/mirrors/optional_parameters_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/codegen/lib/mirrors/operator_test.dart
diff --git a/test/codegen/lib/mirrors/operator_test.dart b/test/codegen/lib/mirrors/operator_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..c534f1ff514481b263bfebe1a9ef47d7329ffbda
--- /dev/null
+++ b/test/codegen/lib/mirrors/operator_test.dart
@@ -0,0 +1,137 @@
+// 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 operators.
+library test.operator_test;
+
+import 'dart:mirrors';
+
+import 'package:expect/expect.dart';
+
+import 'stringify.dart';
+
+class Foo {
+ Foo operator ~() {}
+ Foo operator -() {}
+
+ bool operator ==(a) {}
+ Foo operator [](int a) {}
+ Foo operator *(Foo a) {}
+ Foo operator /(Foo a) {}
+ Foo operator %(Foo a) {}
+ Foo operator ~/(Foo a) {}
+ Foo operator +(Foo a) {}
+ Foo operator <<(Foo a) {}
+ Foo operator >>(Foo a) {}
+ Foo operator >=(Foo a) {}
+ Foo operator >(Foo a) {}
+ Foo operator <=(Foo a) {}
+ Foo operator <(Foo a) {}
+ Foo operator &(Foo a) {}
+ Foo operator ^(Foo a) {}
+ Foo operator |(Foo a) {}
+ Foo operator -(Foo a) {}
+
+ // TODO(ahe): use void when dart2js reifies that type.
+ operator []=(int a, Foo b) {}
+}
+
+void main() {
+ ClassMirror cls = reflectClass(Foo);
+ var operators = new Map<Symbol, MethodMirror>();
+ var operatorParameters = new Map<Symbol, List>();
+ var returnTypes = new Map<Symbol, Mirror>();
+ for (MethodMirror method in cls.declarations.values.where(
+ (d) => d is MethodMirror && !d.isConstructor)) {
+ Expect.isTrue(method.isRegularMethod);
+ Expect.isTrue(method.isOperator);
+ Expect.isFalse(method.isGetter);
+ Expect.isFalse(method.isSetter);
+ Expect.isFalse(method.isAbstract);
+ operators[method.simpleName] = method;
+ operatorParameters[method.simpleName] = method.parameters;
+ returnTypes[method.simpleName] = method.returnType;
+ }
+ expect(OPERATORS, operators);
+ expect(PARAMETERS, operatorParameters);
+ expect(RETURN_TYPES, returnTypes);
+}
+
+const String OPERATORS = '{'
+'%: Method(s(%) in s(Foo)), '
+'&: Method(s(&) in s(Foo)), '
+'*: Method(s(*) in s(Foo)), '
+'+: Method(s(+) in s(Foo)), '
+'-: Method(s(-) in s(Foo)), '
+'/: Method(s(/) in s(Foo)), '
+'<: Method(s(<) in s(Foo)), '
+'<<: Method(s(<<) in s(Foo)), '
+'<=: Method(s(<=) in s(Foo)), '
+'==: Method(s(==) in s(Foo)), '
+'>: Method(s(>) in s(Foo)), '
+'>=: Method(s(>=) in s(Foo)), '
+'>>: Method(s(>>) in s(Foo)), '
+'[]: Method(s([]) in s(Foo)), '
+'[]=: Method(s([]=) in s(Foo)), '
+'^: Method(s(^) in s(Foo)), '
+'unary-: Method(s(unary-) in s(Foo)), '
+'|: Method(s(|) in s(Foo)), '
+'~: Method(s(~) in s(Foo)), '
+'~/: Method(s(~/) in s(Foo))'
+'}';
+
+const String DYNAMIC = 'Type(s(dynamic), top-level)';
+
+const String FOO = 'Class(s(Foo) in s(test.operator_test), top-level)';
+
+const String INT = 'Class(s(int) in s(dart.core), top-level)';
+
+const String BOOL = 'Class(s(bool) in s(dart.core), top-level)';
+
+const String PARAMETERS = '{'
+'%: [Parameter(s(a) in s(%), type = $FOO)], '
+'&: [Parameter(s(a) in s(&), type = $FOO)], '
+'*: [Parameter(s(a) in s(*), type = $FOO)], '
+'+: [Parameter(s(a) in s(+), type = $FOO)], '
+'-: [Parameter(s(a) in s(-), type = $FOO)], '
+'/: [Parameter(s(a) in s(/), type = $FOO)], '
+'<: [Parameter(s(a) in s(<), type = $FOO)], '
+'<<: [Parameter(s(a) in s(<<), type = $FOO)], '
+'<=: [Parameter(s(a) in s(<=), type = $FOO)], '
+'==: [Parameter(s(a) in s(==), type = $DYNAMIC)], '
+'>: [Parameter(s(a) in s(>), type = $FOO)], '
+'>=: [Parameter(s(a) in s(>=), type = $FOO)], '
+'>>: [Parameter(s(a) in s(>>), type = $FOO)], '
+'[]: [Parameter(s(a) in s([]), type = $INT)], '
+'[]=: [Parameter(s(a) in s([]=), type = $INT), '
+ 'Parameter(s(b) in s([]=), type = $FOO)], '
+'^: [Parameter(s(a) in s(^), type = $FOO)], '
+'unary-: [], '
+'|: [Parameter(s(a) in s(|), type = $FOO)], '
+'~: [], '
+'~/: [Parameter(s(a) in s(~/), type = $FOO)]'
+'}';
+
+const String RETURN_TYPES = '{'
+'%: $FOO, '
+'&: $FOO, '
+'*: $FOO, '
+'+: $FOO, '
+'-: $FOO, '
+'/: $FOO, '
+'<: $FOO, '
+'<<: $FOO, '
+'<=: $FOO, '
+'==: $BOOL, '
+'>: $FOO, '
+'>=: $FOO, '
+'>>: $FOO, '
+'[]: $FOO, '
+'[]=: $DYNAMIC, '
+'^: $FOO, '
+'unary-: $FOO, '
+'|: $FOO, '
+'~: $FOO, '
+'~/: $FOO'
+'}';
« no previous file with comments | « test/codegen/lib/mirrors/null_test.dart ('k') | test/codegen/lib/mirrors/optional_parameters_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698