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 // This tests uses the multi-test "ok" feature: | 5 // This tests uses the multi-test "ok" feature: |
6 // none: Trimmed behaviour. Passing on the VM. | 6 // none: Trimmed behaviour. Passing on the VM. |
7 // 01: Trimmed version for dart2js. | 7 // 01: Trimmed version for dart2js. |
8 // 02: Full version passing in the VM. | 8 // 02: Full version passing in the VM. |
9 // | 9 // |
10 // TODO(rmacnak,ahe): Remove multi-test when VM and dart2js are on par. | 10 // TODO(rmacnak,ahe): Remove multi-test when VM and dart2js are on par. |
11 | 11 |
12 library test.class_equality_test; | 12 library test.class_equality_test; |
13 | 13 |
14 import 'dart:mirrors'; | 14 import 'dart:mirrors'; |
15 | 15 |
16 import 'package:expect/expect.dart'; | 16 import 'package:expect/expect.dart'; |
17 | 17 |
18 class A<T> {} | 18 class A<T> {} |
19 class B extends A<int> {} | 19 class B extends A<int> {} |
20 | 20 |
21 class BadEqualityHash { | 21 class BadEqualityHash { |
22 int count = 0; | 22 int count = 0; |
23 bool operator ==(other) => true; | 23 bool operator ==(other) => true; |
24 int get hashCode => count++; | 24 int get hashCode => count++; |
25 } | 25 } |
26 | 26 |
27 typedef bool Predicate(Object o); | |
28 Predicate somePredicate; | |
29 | |
27 checkEquality(List<Map> equivalenceClasses) { | 30 checkEquality(List<Map> equivalenceClasses) { |
28 for (var equivalenceClass in equivalenceClasses) { | 31 for (var equivalenceClass in equivalenceClasses) { |
29 equivalenceClass.forEach((name, member) { | 32 equivalenceClass.forEach((name, member) { |
30 equivalenceClass.forEach((otherName, otherMember) { | 33 equivalenceClass.forEach((otherName, otherMember) { |
31 // Reflexivity, symmetry and transitivity. | 34 // Reflexivity, symmetry and transitivity. |
32 Expect.equals(member, | 35 Expect.equals(member, |
33 otherMember, | 36 otherMember, |
34 "$name == $otherName"); | 37 "$name == $otherName"); |
35 Expect.equals(member.hashCode, | 38 Expect.equals(member.hashCode, |
36 otherMember.hashCode, | 39 otherMember.hashCode, |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
110 'reflect(new A<int>()).type.originalDeclaration' : | 113 'reflect(new A<int>()).type.originalDeclaration' : |
111 reflect(new A<int>()).type.originalDeclaration}, | 114 reflect(new A<int>()).type.originalDeclaration}, |
112 | 115 |
113 {'reflectClass(B).superclass' : reflectClass(B).superclass, /// 02: ok | 116 {'reflectClass(B).superclass' : reflectClass(B).superclass, /// 02: ok |
114 'reflect(new A<int>()).type' : reflect(new A<int>()).type}, /// 02: ok | 117 'reflect(new A<int>()).type' : reflect(new A<int>()).type}, /// 02: ok |
115 | 118 |
116 {'reflectClass(B)' : reflectClass(B), | 119 {'reflectClass(B)' : reflectClass(B), |
117 'thisLibrary.classes[#B]' : thisLibrary.classes[#B], | 120 'thisLibrary.classes[#B]' : thisLibrary.classes[#B], |
118 'reflect(new B()).type' : reflect(new B()).type}, | 121 'reflect(new B()).type' : reflect(new B()).type}, |
119 | 122 |
123 {'reflectClass(BadEqualityHash).methods[#==]' /// 02: ok | |
124 : reflectClass(BadEqualityHash).methods[#==], /// 02: ok | |
125 'reflect(new BadEqualityHash()).type.methods[#==]' /// 02: ok | |
126 : reflect(new BadEqualityHash()).type.methods[#==]}, /// 02: ok | |
127 | |
128 {'reflectClass(BadEqualityHash).methods[#==].parameters[0]' /// 02: ok | |
129 : reflectClass(BadEqualityHash).methods[#==].parameters[0], /// 02: ok | |
130 'reflect(new BadEqualityHash()).type.methods[#==].parameters[0]' /// 02: o k | |
131 : reflect(new BadEqualityHash()).type.methods[#==].parameters[0]}, /// 02: ok | |
ahe
2013/10/22 12:42:01
Long lines.
| |
132 | |
133 {'reflectClass(BadEqualityHash).variables[#count]' /// 02: ok | |
134 : reflectClass(BadEqualityHash).variables[#count], /// 02: ok | |
135 'reflect(new BadEqualityHash()).type.variables[#count]' /// 02: ok | |
136 : reflect(new BadEqualityHash()).type.variables[#count]}, /// 02: ok | |
137 | |
138 {'reflectType(Predicate)' : reflectType(Predicate), /// 02: ok | |
139 'thisLibrary.variables[#somePredicate].type' /// 02: ok | |
140 : thisLibrary.variables[#somePredicate].type}, /// 02: ok | |
141 | |
142 {'reflectType(Predicate).referent' : reflectType(Predicate).referent, /// 0 2: ok | |
143 'thisLibrary.variables[#somePredicate].type.referent' /// 02: ok | |
144 : thisLibrary.variables[#somePredicate].type.referent}, /// 02: ok | |
145 | |
146 {'reflectClass(A).typeVariables.single' /// 02: ok | |
147 : reflectClass(A).typeVariables.single, /// 02: ok | |
148 'reflect(new A<int>()).type.originalDeclaration.typeVariables.single' /// 02: ok | |
149 : reflect(new A<int>()).type.originalDeclaration.typeVariables.single}, /// 02: ok | |
150 | |
151 {'currentMirrorSystem()' : currentMirrorSystem()}, | |
152 | |
153 {'currentMirrorSystem().isolate' : currentMirrorSystem().isolate}, | |
154 | |
120 {'thisLibrary' : thisLibrary, | 155 {'thisLibrary' : thisLibrary, |
121 'reflectClass(A).owner' : reflectClass(A).owner, | 156 'reflectClass(A).owner' : reflectClass(A).owner, |
122 'reflectClass(B).owner' : reflectClass(B).owner, | 157 'reflectClass(B).owner' : reflectClass(B).owner, |
123 'reflect(new A()).type.owner' : reflect(new A()).type.owner, | 158 'reflect(new A()).type.owner' : reflect(new A()).type.owner, |
124 'reflect(new B()).type.owner' : reflect(new B()).type.owner}, | 159 'reflect(new B()).type.owner' : reflect(new B()).type.owner}, |
125 ]); | 160 ]); |
126 } | 161 } |
OLD | NEW |