OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 import 'package:boolean_selector/boolean_selector.dart'; |
| 6 |
5 import 'package:test/src/backend/metadata.dart'; | 7 import 'package:test/src/backend/metadata.dart'; |
6 import 'package:test/src/backend/test_platform.dart'; | 8 import 'package:test/src/backend/test_platform.dart'; |
7 import 'package:test/src/frontend/skip.dart'; | 9 import 'package:test/src/frontend/skip.dart'; |
8 import 'package:test/src/frontend/timeout.dart'; | 10 import 'package:test/src/frontend/timeout.dart'; |
9 import 'package:test/test.dart'; | 11 import 'package:test/test.dart'; |
10 | 12 |
11 void main() { | 13 void main() { |
12 group("tags", () { | 14 group("tags", () { |
13 test("parses an Iterable", () { | 15 test("parses an Iterable", () { |
14 expect(new Metadata.parse(tags: ["a", "b"]).tags, | 16 expect(new Metadata.parse(tags: ["a", "b"]).tags, |
(...skipping 30 matching lines...) Expand all Loading... |
45 }); | 47 }); |
46 | 48 |
47 group("constructor", () { | 49 group("constructor", () { |
48 test("returns the normal metadata if there's no forTag", () { | 50 test("returns the normal metadata if there's no forTag", () { |
49 var metadata = new Metadata(verboseTrace: true, tags: ['foo', 'bar']); | 51 var metadata = new Metadata(verboseTrace: true, tags: ['foo', 'bar']); |
50 expect(metadata.verboseTrace, isTrue); | 52 expect(metadata.verboseTrace, isTrue); |
51 expect(metadata.tags, equals(['foo', 'bar'])); | 53 expect(metadata.tags, equals(['foo', 'bar'])); |
52 }); | 54 }); |
53 | 55 |
54 test("returns the normal metadata if there's no tags", () { | 56 test("returns the normal metadata if there's no tags", () { |
55 var metadata = new Metadata(verboseTrace: true, | 57 var metadata = new Metadata(verboseTrace: true, forTag: { |
56 forTag: {'foo': new Metadata(skip: true)}); | 58 new BooleanSelector.parse('foo'): new Metadata(skip: true) |
| 59 }); |
57 expect(metadata.verboseTrace, isTrue); | 60 expect(metadata.verboseTrace, isTrue); |
58 expect(metadata.skip, isFalse); | 61 expect(metadata.skip, isFalse); |
59 expect(metadata.forTag, contains('foo')); | 62 expect(metadata.forTag, contains(new BooleanSelector.parse('foo'))); |
60 expect(metadata.forTag['foo'].skip, isTrue); | 63 expect(metadata.forTag[new BooleanSelector.parse('foo')].skip, isTrue); |
61 }); | 64 }); |
62 | 65 |
63 test("returns the normal metadata if forTag doesn't match tags", () { | 66 test("returns the normal metadata if forTag doesn't match tags", () { |
64 var metadata = new Metadata( | 67 var metadata = new Metadata( |
65 verboseTrace: true, | 68 verboseTrace: true, |
66 tags: ['bar', 'baz'], | 69 tags: ['bar', 'baz'], |
67 forTag: {'foo': new Metadata(skip: true)}); | 70 forTag: {new BooleanSelector.parse('foo'): new Metadata(skip: true)}); |
68 | 71 |
69 expect(metadata.verboseTrace, isTrue); | 72 expect(metadata.verboseTrace, isTrue); |
70 expect(metadata.skip, isFalse); | 73 expect(metadata.skip, isFalse); |
71 expect(metadata.tags, unorderedEquals(['bar', 'baz'])); | 74 expect(metadata.tags, unorderedEquals(['bar', 'baz'])); |
72 expect(metadata.forTag, contains('foo')); | 75 expect(metadata.forTag, contains(new BooleanSelector.parse('foo'))); |
73 expect(metadata.forTag['foo'].skip, isTrue); | 76 expect(metadata.forTag[new BooleanSelector.parse('foo')].skip, isTrue); |
74 }); | 77 }); |
75 | 78 |
76 test("resolves forTags that match tags", () { | 79 test("resolves forTags that match tags", () { |
77 var metadata = new Metadata( | 80 var metadata = new Metadata( |
78 verboseTrace: true, | 81 verboseTrace: true, |
79 tags: ['foo', 'bar', 'baz'], | 82 tags: ['foo', 'bar', 'baz'], |
80 forTag: { | 83 forTag: { |
81 'foo': new Metadata(skip: true), | 84 new BooleanSelector.parse('foo'): new Metadata(skip: true), |
82 'baz': new Metadata(timeout: Timeout.none), | 85 new BooleanSelector.parse('baz'): |
83 'qux': new Metadata(skipReason: "blah") | 86 new Metadata(timeout: Timeout.none), |
| 87 new BooleanSelector.parse('qux'): new Metadata(skipReason: "blah") |
84 }); | 88 }); |
85 | 89 |
86 expect(metadata.verboseTrace, isTrue); | 90 expect(metadata.verboseTrace, isTrue); |
87 expect(metadata.skip, isTrue); | 91 expect(metadata.skip, isTrue); |
88 expect(metadata.skipReason, isNull); | 92 expect(metadata.skipReason, isNull); |
89 expect(metadata.timeout, equals(Timeout.none)); | 93 expect(metadata.timeout, equals(Timeout.none)); |
90 expect(metadata.tags, unorderedEquals(['foo', 'bar', 'baz'])); | 94 expect(metadata.tags, unorderedEquals(['foo', 'bar', 'baz'])); |
91 expect(metadata.forTag.keys, equals(['qux'])); | 95 expect(metadata.forTag.keys, equals([new BooleanSelector.parse('qux')])); |
92 }); | 96 }); |
93 | 97 |
94 test("resolves forTags that adds a behavioral tag", () { | 98 test("resolves forTags that adds a behavioral tag", () { |
95 var metadata = new Metadata( | 99 var metadata = new Metadata( |
96 tags: ['foo'], | 100 tags: ['foo'], |
97 forTag: { | 101 forTag: { |
98 'baz': new Metadata(skip: true), | 102 new BooleanSelector.parse('baz'): new Metadata(skip: true), |
99 'bar': new Metadata(verboseTrace: true, tags: ['baz']), | 103 new BooleanSelector.parse('bar'): |
100 'foo': new Metadata(tags: ['bar']) | 104 new Metadata(verboseTrace: true, tags: ['baz']), |
| 105 new BooleanSelector.parse('foo'): new Metadata(tags: ['bar']) |
101 }); | 106 }); |
102 | 107 |
103 expect(metadata.verboseTrace, isTrue); | 108 expect(metadata.verboseTrace, isTrue); |
104 expect(metadata.skip, isTrue); | 109 expect(metadata.skip, isTrue); |
105 expect(metadata.tags, unorderedEquals(['foo', 'bar', 'baz'])); | 110 expect(metadata.tags, unorderedEquals(['foo', 'bar', 'baz'])); |
106 expect(metadata.forTag, isEmpty); | 111 expect(metadata.forTag, isEmpty); |
107 }); | 112 }); |
108 | 113 |
109 test("resolves forTags that adds circular tags", () { | 114 test("resolves forTags that adds circular tags", () { |
110 var metadata = new Metadata( | 115 var metadata = new Metadata( |
111 tags: ['foo'], | 116 tags: ['foo'], |
112 forTag: { | 117 forTag: { |
113 'foo': new Metadata(tags: ['bar']), | 118 new BooleanSelector.parse('foo'): new Metadata(tags: ['bar']), |
114 'bar': new Metadata(tags: ['baz']), | 119 new BooleanSelector.parse('bar'): new Metadata(tags: ['baz']), |
115 'baz': new Metadata(tags: ['foo']) | 120 new BooleanSelector.parse('baz'): new Metadata(tags: ['foo']) |
116 }); | 121 }); |
117 | 122 |
118 expect(metadata.tags, unorderedEquals(['foo', 'bar', 'baz'])); | 123 expect(metadata.tags, unorderedEquals(['foo', 'bar', 'baz'])); |
119 expect(metadata.forTag, isEmpty); | 124 expect(metadata.forTag, isEmpty); |
120 }); | 125 }); |
121 | 126 |
122 test("base metadata takes precedence over forTags", () { | 127 test("base metadata takes precedence over forTags", () { |
123 var metadata = new Metadata( | 128 var metadata = new Metadata(verboseTrace: true, tags: ['foo'], forTag: { |
124 verboseTrace: true, | 129 new BooleanSelector.parse('foo'): new Metadata(verboseTrace: false) |
125 tags: ['foo'], | 130 }); |
126 forTag: {'foo': new Metadata(verboseTrace: false)}); | |
127 | 131 |
128 expect(metadata.verboseTrace, isTrue); | 132 expect(metadata.verboseTrace, isTrue); |
129 }); | 133 }); |
130 }); | 134 }); |
131 | 135 |
132 group("onPlatform", () { | 136 group("onPlatform", () { |
133 test("parses a valid map", () { | 137 test("parses a valid map", () { |
134 var metadata = new Metadata.parse(onPlatform: { | 138 var metadata = new Metadata.parse(onPlatform: { |
135 "chrome": new Timeout.factor(2), | 139 "chrome": new Timeout.factor(2), |
136 "vm": [new Skip(), new Timeout.factor(3)] | 140 "vm": [new Skip(), new Timeout.factor(3)] |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
176 }, throwsArgumentError); | 180 }, throwsArgumentError); |
177 }); | 181 }); |
178 | 182 |
179 test("refuses multiple Skips", () { | 183 test("refuses multiple Skips", () { |
180 expect(() { | 184 expect(() { |
181 new Metadata.parse(onPlatform: {"chrome": [new Skip(), new Skip()]}); | 185 new Metadata.parse(onPlatform: {"chrome": [new Skip(), new Skip()]}); |
182 }, throwsArgumentError); | 186 }, throwsArgumentError); |
183 }); | 187 }); |
184 }); | 188 }); |
185 } | 189 } |
OLD | NEW |