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

Side by Side Diff: pkg/checked_mirrors/test/throws_test.dart

Issue 111643015: Preliminary checked mirrors (not ready for review yet) (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/checked_mirrors/test/logging_test.dart ('k') | pkg/pkg.status » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 import 'dart:mirrors' as m;
2 import 'package:checked_mirrors/checked_mirrors.dart';
3 import 'package:checked_mirrors/control.dart';
4
5 import 'package:logging/logging.dart';
6 import 'package:unittest/unittest.dart';
7 import 'package:unittest/compact_vm_config.dart';
8
9 @MirrorsUsed(symbols: 'y', targets: const [B], metaTargets: const[Reflected])
10 const checked_mirrors_workaround_for_issue_10360 = 0;
11
12 class Reflected { const Reflected(); }
13 const reflected = const Reflected();
14
15 class A {
16 int x = 1;
17 int y = 2; // declared symbol 'y', but target is not declared either
18 }
19
20 class B {
21 int x = 3; // covered by class B
22 }
23
24 @Reflected() // all symbols in this class are declared
25 class C {
26 int x = 4;
27 int z = 5;
28 }
29
30 class D {
31 @reflected int x = 6;
32 int z = 7; // not declared
33 }
34
35 var a = new A();
36 var b = new B();
37 var c = new C();
38 var d = new D();
39
40 main() {
41 useCompactVMConfiguration();
42 initialize(throwOnWarning: true);
43
44 group('get name,', () {
45 test('default mirrors', () {
46 expect(m.MirrorSystem.getName(#x), 'x');
47 expect(m.MirrorSystem.getSymbol('x'), #x);
48 expect(m.MirrorSystem.getName(#y), 'y');
49 expect(m.MirrorSystem.getSymbol('y'), #y);
50 });
51
52 test('symbol is declared', () {
53 expect(MirrorSystem.getName(#y), 'y');
54 expect(MirrorSystem.getSymbol('y'), #y);
55 });
56
57 test('symbol is not declared', () {
58 expect(() => MirrorSystem.getName(#x), throws);
59 expect(() => MirrorSystem.getSymbol('x'), throws);
60 });
61 });
62
63 group('get field,', () {
64 test('default mirrors', () {
65 expect(m.reflect(a).getField(#y).reflectee, 2);
66 expect(m.reflect(b).getField(#x).reflectee, 3);
67
68 expect(m.reflect(c).getField(#x).reflectee, 4);
69 expect(m.reflect(c).getField(#z).reflectee, 5);
70
71 expect(m.reflect(d).getField(#x).reflectee, 6);
72 expect(m.reflect(d).getField(#z).reflectee, 7);
73 });
74
75 test('symbol is not declared', () {
76 expect(() => reflect(a).getField(#x), throws);
77 });
78
79 test('even if symbol is declared', () {
80 expect(() => reflect(a).getField(#y), throws);
81 });
82
83 test('target is declared', () {
84 expect(reflect(b).getField(#x).reflectee, 3);
85 });
86
87 test('meta target is declared on class', () {
88 expect(reflect(c).getField(#x).reflectee, 4);
89 expect(reflect(c).getField(#z).reflectee, 5);
90 });
91
92 test('meta target is declared on field', () {
93 expect(reflect(d).getField(#x).reflectee, 6);
94 expect(() => reflect(d).getField(#z), throws);
95 });
96 });
97
98 group('set field,', () {
99 test('default mirrors', () {
100 m.reflect(a).setField(#x, 101);
101 m.reflect(a).setField(#y, 102);
102 m.reflect(b).setField(#x, 103);
103 m.reflect(c).setField(#x, 104);
104 m.reflect(c).setField(#z, 105);
105 m.reflect(d).setField(#x, 106);
106 m.reflect(d).setField(#z, 107);
107
108 expect(a.x, 101);
109 expect(a.y, 102);
110 expect(b.x, 103);
111 expect(c.x, 104);
112 expect(c.z, 105);
113 expect(d.x, 106);
114 expect(d.z, 107);
115 });
116
117 test('symbol not declared', () {
118 expect(() => reflect(a).setField(#x, 201), throws);
119 });
120
121 test('even if symbol is declared', () {
122 expect(() => reflect(a).setField(#x, 202), throws);
123 });
124
125 test('target is declared', () {
126 reflect(b).setField(#x, 203);
127 expect(b.x, 203);
128 });
129
130 test('meta target is declared on class', () {
131 reflect(c).setField(#x, 204);
132 reflect(c).setField(#z, 205);
133 expect(c.x, 204);
134 expect(c.z, 205);
135 });
136
137 test('meta target is declared on field', () {
138 reflect(d).setField(#x, 206);
139 expect(() => reflect(d).setField(#z, 207), throws);
140 expect(d.x, 206);
141 });
142 });
143 }
OLDNEW
« no previous file with comments | « pkg/checked_mirrors/test/logging_test.dart ('k') | pkg/pkg.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698