| 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 main() { | 10 main() { |
| 11 // TODO(jmesserly): need all standard Map API tests. | 11 // TODO(jmesserly): need all standard Map API tests. |
| 12 | 12 |
| 13 StreamSubscription sub; | 13 StreamSubscription sub; |
| 14 | 14 |
| 15 sharedTearDown() { | 15 sharedTearDown() { |
| 16 if (sub != null) { | 16 if (sub != null) { |
| 17 sub.cancel(); | 17 sub.cancel(); |
| 18 sub = null; | 18 sub = null; |
| 19 } | 19 } |
| 20 } | 20 } |
| 21 | 21 |
| 22 group('observe length', () { | 22 group('observe length', () { |
| 23 ObservableMap map; | 23 ObservableMap map; |
| 24 List<ChangeRecord> changes; | 24 List<ChangeRecord> changes; |
| 25 | 25 |
| 26 setUp(() { | 26 setUp(() { |
| 27 map = toObservable({'a': 1, 'b': 2, 'c': 3}); | 27 map = toObservable({'a': 1, 'b': 2, 'c': 3}); |
| 28 changes = null; | 28 changes = null; |
| 29 sub = map.changes.listen((records) { | 29 sub = map.changes.listen((records) { |
| 30 changes = records.where((r) => r.changes(_LENGTH)).toList(); | 30 changes = records.where((r) => r.changes(#length)).toList(); |
| 31 }); | 31 }); |
| 32 }); | 32 }); |
| 33 | 33 |
| 34 tearDown(sharedTearDown); | 34 tearDown(sharedTearDown); |
| 35 | 35 |
| 36 observeTest('add item changes length', () { | 36 observeTest('add item changes length', () { |
| 37 map['d'] = 4; | 37 map['d'] = 4; |
| 38 expect(map, {'a': 1, 'b': 2, 'c': 3, 'd': 4}); | 38 expect(map, {'a': 1, 'b': 2, 'c': 3, 'd': 4}); |
| 39 performMicrotaskCheckpoint(); | 39 performMicrotaskCheckpoint(); |
| 40 expectChanges(changes, [_lengthChange]); | 40 expectChanges(changes, [_lengthChange]); |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 performMicrotaskCheckpoint(); | 244 performMicrotaskCheckpoint(); |
| 245 expectChanges(records, [ | 245 expectChanges(records, [ |
| 246 _change('a', isRemove: true), | 246 _change('a', isRemove: true), |
| 247 _change('b', isRemove: true), | 247 _change('b', isRemove: true), |
| 248 _lengthChange, | 248 _lengthChange, |
| 249 ]); | 249 ]); |
| 250 }); | 250 }); |
| 251 }); | 251 }); |
| 252 } | 252 } |
| 253 | 253 |
| 254 | 254 final _lengthChange = new PropertyChangeRecord(#length); |
| 255 const _LENGTH = const Symbol('length'); | |
| 256 | |
| 257 final _lengthChange = new PropertyChangeRecord(_LENGTH); | |
| 258 | 255 |
| 259 _change(key, {isInsert: false, isRemove: false}) => | 256 _change(key, {isInsert: false, isRemove: false}) => |
| 260 new MapChangeRecord(key, isInsert: isInsert, isRemove: isRemove); | 257 new MapChangeRecord(key, isInsert: isInsert, isRemove: isRemove); |
| OLD | NEW |