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 import 'dart:async'; | 5 import 'dart:async'; |
6 import 'package:observe/observe.dart'; | 6 import 'package:observe/observe.dart'; |
7 import 'package:unittest/unittest.dart'; | 7 import 'package:unittest/unittest.dart'; |
8 import 'observe_test_utils.dart'; | 8 import 'observe_test_utils.dart'; |
9 | 9 |
10 // This file contains code ported from: | 10 // This file contains code ported from: |
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 | 320 |
321 test('object with noSuchMethod', () { | 321 test('object with noSuchMethod', () { |
322 var model = new NoSuchMethodModel(); | 322 var model = new NoSuchMethodModel(); |
323 var observer = new PathObserver(model, 'foo'); | 323 var observer = new PathObserver(model, 'foo'); |
324 | 324 |
325 expect(observer.value, 42); | 325 expect(observer.value, 42); |
326 observer.value = 'hi'; | 326 observer.value = 'hi'; |
327 expect(model._foo, 'hi'); | 327 expect(model._foo, 'hi'); |
328 expect(observer.value, 'hi'); | 328 expect(observer.value, 'hi'); |
329 | 329 |
330 expect(model.log, [#foo, const Symbol('foo='), #foo, #foo]); | 330 expect(model.log, [#foo, const Symbol('foo='), #foo]); |
331 | 331 |
332 // These shouldn't throw | 332 // These shouldn't throw |
333 observer = new PathObserver(model, 'bar'); | 333 observer = new PathObserver(model, 'bar'); |
334 expect(observer.value, null, reason: 'path not found'); | 334 expect(observer.value, null, reason: 'path not found'); |
335 observer.value = 42; | 335 observer.value = 42; |
336 expect(observer.value, null, reason: 'path not found'); | 336 expect(observer.value, null, reason: 'path not found'); |
337 }); | 337 }); |
338 | 338 |
339 test('object with indexer', () { | 339 test('object with indexer', () { |
340 var model = new IndexerModel(); | 340 var model = new IndexerModel(); |
341 var observer = new PathObserver(model, 'foo'); | 341 var observer = new PathObserver(model, 'foo'); |
342 | 342 |
343 expect(observer.value, 42); | 343 expect(observer.value, 42); |
344 expect(model.log, ['[] foo']); | 344 expect(model.log, ['[] foo']); |
345 model.log.clear(); | 345 model.log.clear(); |
346 | 346 |
347 observer.value = 'hi'; | 347 observer.value = 'hi'; |
348 expect(model.log, ['[]= foo hi', '[] foo']); | 348 expect(model.log, ['[]= foo hi']); |
349 expect(model._foo, 'hi'); | 349 expect(model._foo, 'hi'); |
350 | 350 |
351 expect(observer.value, 'hi'); | 351 expect(observer.value, 'hi'); |
352 | 352 |
353 // These shouldn't throw | 353 // These shouldn't throw |
354 model.log.clear(); | 354 model.log.clear(); |
355 observer = new PathObserver(model, 'bar'); | 355 observer = new PathObserver(model, 'bar'); |
356 expect(observer.value, null, reason: 'path not found'); | 356 expect(observer.value, null, reason: 'path not found'); |
357 expect(model.log, ['[] bar']); | 357 expect(model.log, ['[] bar']); |
358 model.log.clear(); | 358 model.log.clear(); |
359 | 359 |
360 observer.value = 42; | 360 observer.value = 42; |
361 expect(model.log, ['[]= bar 42', '[] bar']); | 361 expect(model.log, ['[]= bar 42']); |
362 model.log.clear(); | 362 model.log.clear(); |
363 }); | 363 }); |
364 } | 364 } |
365 | 365 |
366 /// A matcher that checks that a closure throws a NoSuchMethodError matching the | 366 /// A matcher that checks that a closure throws a NoSuchMethodError matching the |
367 /// given [name]. | 367 /// given [name]. |
368 _throwsNSM(String name) => throwsA(_isNoSuchMethodOf(name)); | 368 _throwsNSM(String name) => throwsA(_isNoSuchMethodOf(name)); |
369 | 369 |
370 /// A matcher that checkes whether an exception is a NoSuchMethodError matching | 370 /// A matcher that checkes whether an exception is a NoSuchMethodError matching |
371 /// the given [name]. | 371 /// the given [name]. |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
449 | 449 |
450 class WatcherModel extends Observable { | 450 class WatcherModel extends Observable { |
451 // TODO(jmesserly): dart2js does not let these be on the same line: | 451 // TODO(jmesserly): dart2js does not let these be on the same line: |
452 // @observable var a, b, c; | 452 // @observable var a, b, c; |
453 @observable var a; | 453 @observable var a; |
454 @observable var b; | 454 @observable var b; |
455 @observable var c; | 455 @observable var c; |
456 | 456 |
457 WatcherModel(); | 457 WatcherModel(); |
458 } | 458 } |
OLD | NEW |