OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 @TestOn("vm") | 5 @TestOn("vm") |
6 | 6 |
7 import 'package:boolean_selector/boolean_selector.dart'; | 7 import 'package:boolean_selector/boolean_selector.dart'; |
8 import 'package:path/path.dart' as p; | 8 import 'package:path/path.dart' as p; |
9 import 'package:test/test.dart'; | 9 import 'package:test/test.dart'; |
10 | 10 |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 excludeTags: new BooleanSelector.parse("qux")); | 222 excludeTags: new BooleanSelector.parse("qux")); |
223 var merged = older.merge(newer); | 223 var merged = older.merge(newer); |
224 | 224 |
225 expect(merged.includeTags, | 225 expect(merged.includeTags, |
226 equals(new BooleanSelector.parse("(foo || bar) && blip"))); | 226 equals(new BooleanSelector.parse("(foo || bar) && blip"))); |
227 expect(merged.excludeTags, | 227 expect(merged.excludeTags, |
228 equals(new BooleanSelector.parse("(baz || bang) || qux"))); | 228 equals(new BooleanSelector.parse("(baz || bang) || qux"))); |
229 }); | 229 }); |
230 }); | 230 }); |
231 | 231 |
232 group("for tags", () { | 232 group("for sets", () { |
233 test("merges each nested configuration", () { | 233 test("if neither is defined, preserves the default", () { |
| 234 var merged = new Configuration().merge(new Configuration()); |
| 235 expect(merged.addTags, isEmpty); |
| 236 expect(merged.chosenPresets, isEmpty); |
| 237 }); |
| 238 |
| 239 test("if only the old configuration's is defined, uses it", () { |
234 var merged = new Configuration( | 240 var merged = new Configuration( |
235 tags: { | 241 addTags: new Set.from(["foo", "bar"]), |
236 new BooleanSelector.parse("foo"): | 242 chosenPresets: new Set.from(["baz", "bang"])) |
237 new Configuration(verboseTrace: true), | 243 .merge(new Configuration()); |
238 new BooleanSelector.parse("bar"): new Configuration(jsTrace: true) | |
239 } | |
240 ).merge(new Configuration( | |
241 tags: { | |
242 new BooleanSelector.parse("bar"): new Configuration(jsTrace: false), | |
243 new BooleanSelector.parse("baz"): new Configuration(skip: true) | |
244 } | |
245 )); | |
246 | 244 |
247 expect(merged.tags[new BooleanSelector.parse("foo")].verboseTrace, | 245 expect(merged.addTags, unorderedEquals(["foo", "bar"])); |
248 isTrue); | 246 expect(merged.chosenPresets, equals(["baz", "bang"])); |
249 expect(merged.tags[new BooleanSelector.parse("bar")].jsTrace, isFalse); | 247 }); |
250 expect(merged.tags[new BooleanSelector.parse("baz")].skip, isTrue); | 248 |
| 249 test("if only the new configuration's is defined, uses it", () { |
| 250 var merged = new Configuration().merge(new Configuration( |
| 251 addTags: new Set.from(["foo", "bar"]), |
| 252 chosenPresets: new Set.from(["baz", "bang"]))); |
| 253 |
| 254 expect(merged.addTags, unorderedEquals(["foo", "bar"])); |
| 255 expect(merged.chosenPresets, equals(["baz", "bang"])); |
| 256 }); |
| 257 |
| 258 test("if both are defined, unions them", () { |
| 259 var older = new Configuration( |
| 260 addTags: new Set.from(["foo", "bar"]), |
| 261 chosenPresets: new Set.from(["baz", "bang"])); |
| 262 var newer = new Configuration( |
| 263 addTags: new Set.from(["blip"]), |
| 264 chosenPresets: new Set.from(["qux"])); |
| 265 var merged = older.merge(newer); |
| 266 |
| 267 expect(merged.addTags, unorderedEquals(["foo", "bar", "blip"])); |
| 268 expect(merged.chosenPresets, equals(["baz", "bang", "qux"])); |
251 }); | 269 }); |
252 }); | 270 }); |
253 | 271 |
254 group("for timeout", () { | 272 group("for timeout", () { |
255 test("if neither is defined, preserves the default", () { | 273 test("if neither is defined, preserves the default", () { |
256 var merged = new Configuration().merge(new Configuration()); | 274 var merged = new Configuration().merge(new Configuration()); |
257 expect(merged.timeout, equals(new Timeout.factor(1))); | 275 expect(merged.timeout, equals(new Timeout.factor(1))); |
258 }); | 276 }); |
259 | 277 |
260 test("if only the old configuration's is defined, uses it", () { | 278 test("if only the old configuration's is defined, uses it", () { |
(...skipping 18 matching lines...) Expand all Loading... |
279 test("if the merge conflicts, prefers the new value", () { | 297 test("if the merge conflicts, prefers the new value", () { |
280 var older = new Configuration( | 298 var older = new Configuration( |
281 timeout: new Timeout(new Duration(seconds: 1))); | 299 timeout: new Timeout(new Duration(seconds: 1))); |
282 var newer = new Configuration( | 300 var newer = new Configuration( |
283 timeout: new Timeout(new Duration(seconds: 2))); | 301 timeout: new Timeout(new Duration(seconds: 2))); |
284 var merged = older.merge(newer); | 302 var merged = older.merge(newer); |
285 expect(merged.timeout, equals(new Timeout(new Duration(seconds: 2)))); | 303 expect(merged.timeout, equals(new Timeout(new Duration(seconds: 2)))); |
286 }); | 304 }); |
287 }); | 305 }); |
288 | 306 |
289 group("for onPlatform", () { | 307 group("for config maps", () { |
290 test("merges each nested configuration", () { | 308 test("merges each nested configuration", () { |
291 var merged = new Configuration( | 309 var merged = new Configuration( |
| 310 tags: { |
| 311 new BooleanSelector.parse("foo"): |
| 312 new Configuration(verboseTrace: true), |
| 313 new BooleanSelector.parse("bar"): new Configuration(jsTrace: true) |
| 314 }, |
292 onPlatform: { | 315 onPlatform: { |
293 new PlatformSelector.parse("vm"): new Configuration(verboseTrace: tr
ue), | 316 new PlatformSelector.parse("vm"): |
294 new PlatformSelector.parse("chrome"): new Configuration(jsTrace: tru
e) | 317 new Configuration(verboseTrace: true), |
| 318 new PlatformSelector.parse("chrome"): |
| 319 new Configuration(jsTrace: true) |
| 320 }, |
| 321 presets: { |
| 322 "bang": new Configuration(verboseTrace: true), |
| 323 "qux": new Configuration(jsTrace: true) |
295 } | 324 } |
296 ).merge(new Configuration( | 325 ).merge(new Configuration( |
| 326 tags: { |
| 327 new BooleanSelector.parse("bar"): new Configuration(jsTrace: false), |
| 328 new BooleanSelector.parse("baz"): new Configuration(skip: true) |
| 329 }, |
297 onPlatform: { | 330 onPlatform: { |
298 new PlatformSelector.parse("chrome"): new Configuration(jsTrace: fal
se), | 331 new PlatformSelector.parse("chrome"): |
| 332 new Configuration(jsTrace: false), |
299 new PlatformSelector.parse("firefox"): new Configuration(skip: true) | 333 new PlatformSelector.parse("firefox"): new Configuration(skip: true) |
| 334 }, |
| 335 presets: { |
| 336 "qux": new Configuration(jsTrace: false), |
| 337 "zap": new Configuration(skip: true) |
300 } | 338 } |
301 )); | 339 )); |
302 | 340 |
| 341 expect(merged.tags[new BooleanSelector.parse("foo")].verboseTrace, |
| 342 isTrue); |
| 343 expect(merged.tags[new BooleanSelector.parse("bar")].jsTrace, isFalse); |
| 344 expect(merged.tags[new BooleanSelector.parse("baz")].skip, isTrue); |
| 345 |
303 expect(merged.onPlatform[new PlatformSelector.parse("vm")].verboseTrace, | 346 expect(merged.onPlatform[new PlatformSelector.parse("vm")].verboseTrace, |
304 isTrue); | 347 isTrue); |
305 expect(merged.onPlatform[new PlatformSelector.parse("chrome")].jsTrace, | 348 expect(merged.onPlatform[new PlatformSelector.parse("chrome")].jsTrace, |
306 isFalse); | 349 isFalse); |
307 expect(merged.onPlatform[new PlatformSelector.parse("firefox")].skip, | 350 expect(merged.onPlatform[new PlatformSelector.parse("firefox")].skip, |
308 isTrue); | 351 isTrue); |
| 352 |
| 353 expect(merged.presets["bang"].verboseTrace, isTrue); |
| 354 expect(merged.presets["qux"].jsTrace, isFalse); |
| 355 expect(merged.presets["zap"].skip, isTrue); |
| 356 }); |
| 357 }); |
| 358 |
| 359 group("for presets", () { |
| 360 test("automatically resolves a matching chosen preset", () { |
| 361 var configuration = new Configuration( |
| 362 presets: {"foo": new Configuration(verboseTrace: true)}, |
| 363 chosenPresets: ["foo"]); |
| 364 expect(configuration.presets, isEmpty); |
| 365 expect(configuration.chosenPresets, equals(["foo"])); |
| 366 expect(configuration.knownPresets, equals(["foo"])); |
| 367 expect(configuration.verboseTrace, isTrue); |
| 368 }); |
| 369 |
| 370 test("resolves a chosen presets in order", () { |
| 371 var configuration = new Configuration( |
| 372 presets: { |
| 373 "foo": new Configuration(verboseTrace: true), |
| 374 "bar": new Configuration(verboseTrace: false) |
| 375 }, |
| 376 chosenPresets: ["foo", "bar"]); |
| 377 expect(configuration.presets, isEmpty); |
| 378 expect(configuration.chosenPresets, equals(["foo", "bar"])); |
| 379 expect(configuration.knownPresets, unorderedEquals(["foo", "bar"])); |
| 380 expect(configuration.verboseTrace, isFalse); |
| 381 |
| 382 configuration = new Configuration( |
| 383 presets: { |
| 384 "foo": new Configuration(verboseTrace: true), |
| 385 "bar": new Configuration(verboseTrace: false) |
| 386 }, |
| 387 chosenPresets: ["bar", "foo"]); |
| 388 expect(configuration.presets, isEmpty); |
| 389 expect(configuration.chosenPresets, equals(["bar", "foo"])); |
| 390 expect(configuration.knownPresets, unorderedEquals(["foo", "bar"])); |
| 391 expect(configuration.verboseTrace, isTrue); |
| 392 }); |
| 393 |
| 394 test("ignores inapplicable chosen presets", () { |
| 395 var configuration = new Configuration( |
| 396 presets: {}, |
| 397 chosenPresets: ["baz"]); |
| 398 expect(configuration.presets, isEmpty); |
| 399 expect(configuration.chosenPresets, equals(["baz"])); |
| 400 expect(configuration.knownPresets, equals(isEmpty)); |
| 401 }); |
| 402 |
| 403 test("resolves presets through merging", () { |
| 404 var configuration = new Configuration(presets: { |
| 405 "foo": new Configuration(verboseTrace: true) |
| 406 }).merge(new Configuration(chosenPresets: ["foo"])); |
| 407 |
| 408 expect(configuration.presets, isEmpty); |
| 409 expect(configuration.chosenPresets, equals(["foo"])); |
| 410 expect(configuration.knownPresets, equals(["foo"])); |
| 411 expect(configuration.verboseTrace, isTrue); |
| 412 }); |
| 413 |
| 414 test("preserves known presets through merging", () { |
| 415 var configuration = new Configuration(presets: { |
| 416 "foo": new Configuration(verboseTrace: true) |
| 417 }, chosenPresets: ["foo"]) |
| 418 .merge(new Configuration()); |
| 419 |
| 420 expect(configuration.presets, isEmpty); |
| 421 expect(configuration.chosenPresets, equals(["foo"])); |
| 422 expect(configuration.knownPresets, equals(["foo"])); |
| 423 expect(configuration.verboseTrace, isTrue); |
309 }); | 424 }); |
310 }); | 425 }); |
311 }); | 426 }); |
312 } | 427 } |
OLD | NEW |