| Index: pkg/observe/test/observe_test.dart
|
| diff --git a/pkg/observe/test/observe_test.dart b/pkg/observe/test/observe_test.dart
|
| index 9376ed3ae33bd4243aaaea5d93e86412929cc1aa..f973db9a10491aa6fababd1f8e5a2aa689371421 100644
|
| --- a/pkg/observe/test/observe_test.dart
|
| +++ b/pkg/observe/test/observe_test.dart
|
| @@ -9,11 +9,13 @@ import 'package:observe/src/dirty_check.dart' as dirty_check;
|
| import 'package:unittest/unittest.dart';
|
| import 'observe_test_utils.dart';
|
|
|
| -void main() {
|
| +main() => dirtyCheckZone().run(_tests);
|
| +
|
| +void _tests() {
|
| // Note: to test the basic Observable system, we use ObservableBox due to its
|
| // simplicity. We also test a variant that is based on dirty-checking.
|
|
|
| - observeTest('no observers at the start', () {
|
| + test('no observers at the start', () {
|
| expect(dirty_check.allObservablesCount, 0);
|
| });
|
|
|
| @@ -73,18 +75,18 @@ void _observeTests(createModel(x)) {
|
|
|
| tearDown(() {
|
| for (var sub in subs) sub.cancel();
|
| - performMicrotaskCheckpoint();
|
| -
|
| - expect(dirty_check.allObservablesCount, initialObservers,
|
| - reason: 'Observable object leaked');
|
| + return new Future(() {
|
| + expect(dirty_check.allObservablesCount, initialObservers,
|
| + reason: 'Observable object leaked');
|
| + });
|
| });
|
|
|
| - observeTest('handle future result', () {
|
| + test('handle future result', () {
|
| var callback = expectAsync0((){});
|
| return new Future(callback);
|
| });
|
|
|
| - observeTest('no observers', () {
|
| + test('no observers', () {
|
| var t = createModel(123);
|
| expect(t.value, 123);
|
| t.value = 42;
|
| @@ -92,7 +94,7 @@ void _observeTests(createModel(x)) {
|
| expect(t.hasObservers, false);
|
| });
|
|
|
| - observeTest('listen adds an observer', () {
|
| + test('listen adds an observer', () {
|
| var t = createModel(123);
|
| expect(t.hasObservers, false);
|
|
|
| @@ -100,7 +102,7 @@ void _observeTests(createModel(x)) {
|
| expect(t.hasObservers, true);
|
| });
|
|
|
| - observeTest('changes delived async', () {
|
| + test('changes delived async', () {
|
| var t = createModel(123);
|
| int called = 0;
|
|
|
| @@ -114,7 +116,7 @@ void _observeTests(createModel(x)) {
|
| expect(called, 0);
|
| });
|
|
|
| - observeTest('cause changes in handler', () {
|
| + test('cause changes in handler', () {
|
| var t = createModel(123);
|
| int called = 0;
|
|
|
| @@ -130,7 +132,7 @@ void _observeTests(createModel(x)) {
|
| t.value = 42;
|
| });
|
|
|
| - observeTest('multiple observers', () {
|
| + test('multiple observers', () {
|
| var t = createModel(123);
|
|
|
| verifyRecords(records) {
|
| @@ -144,7 +146,7 @@ void _observeTests(createModel(x)) {
|
| t.value = 42;
|
| });
|
|
|
| - observeTest('performMicrotaskCheckpoint', () {
|
| + test('async processing model', () {
|
| var t = createModel(123);
|
| var records = [];
|
| subs.add(t.changes.listen((r) { records.addAll(r); }));
|
| @@ -152,22 +154,23 @@ void _observeTests(createModel(x)) {
|
| t.value = 42;
|
| expectChanges(records, [], reason: 'changes delived async');
|
|
|
| - performMicrotaskCheckpoint();
|
| - expectPropertyChanges(records, watch ? 1 : 2);
|
| - records.clear();
|
| + return new Future(() {
|
| + expectPropertyChanges(records, watch ? 1 : 2);
|
| + records.clear();
|
|
|
| - t.value = 777;
|
| - expectChanges(records, [], reason: 'changes delived async');
|
| + t.value = 777;
|
| + expectChanges(records, [], reason: 'changes delived async');
|
|
|
| - performMicrotaskCheckpoint();
|
| - expectPropertyChanges(records, 1);
|
| + }).then(newMicrotask).then((_) {
|
| + expectPropertyChanges(records, 1);
|
|
|
| - // Has no effect if there are no changes
|
| - performMicrotaskCheckpoint();
|
| - expectPropertyChanges(records, 1);
|
| + // Has no effect if there are no changes
|
| + Observable.dirtyCheck();
|
| + expectPropertyChanges(records, 1);
|
| + });
|
| });
|
|
|
| - observeTest('cancel listening', () {
|
| + test('cancel listening', () {
|
| var t = createModel(123);
|
| var sub;
|
| sub = t.changes.listen(expectAsync1((records) {
|
| @@ -179,7 +182,7 @@ void _observeTests(createModel(x)) {
|
| t.value = 42;
|
| });
|
|
|
| - observeTest('cancel and reobserve', () {
|
| + test('cancel and reobserve', () {
|
| var t = createModel(123);
|
| var sub;
|
| sub = t.changes.listen(expectAsync1((records) {
|
| @@ -197,47 +200,50 @@ void _observeTests(createModel(x)) {
|
| t.value = 42;
|
| });
|
|
|
| - observeTest('cannot modify changes list', () {
|
| + test('cannot modify changes list', () {
|
| var t = createModel(123);
|
| var records = null;
|
| subs.add(t.changes.listen((r) { records = r; }));
|
| t.value = 42;
|
|
|
| - performMicrotaskCheckpoint();
|
| - expectPropertyChanges(records, 1);
|
| + return new Future(() {
|
| + expectPropertyChanges(records, 1);
|
|
|
| - // Verify that mutation operations on the list fail:
|
| + // Verify that mutation operations on the list fail:
|
|
|
| - expect(() {
|
| - records[0] = new PropertyChangeRecord(t, #value, 0, 1);
|
| - }, throwsUnsupportedError);
|
| + expect(() {
|
| + records[0] = new PropertyChangeRecord(t, #value, 0, 1);
|
| + }, throwsUnsupportedError);
|
|
|
| - expect(() { records.clear(); }, throwsUnsupportedError);
|
| + expect(() { records.clear(); }, throwsUnsupportedError);
|
|
|
| - expect(() { records.length = 0; }, throwsUnsupportedError);
|
| + expect(() { records.length = 0; }, throwsUnsupportedError);
|
| + });
|
| });
|
|
|
| - observeTest('notifyChange', () {
|
| + test('notifyChange', () {
|
| var t = createModel(123);
|
| var records = [];
|
| subs.add(t.changes.listen((r) { records.addAll(r); }));
|
| t.notifyChange(new PropertyChangeRecord(t, #value, 123, 42));
|
|
|
| - performMicrotaskCheckpoint();
|
| - expectPropertyChanges(records, 1);
|
| - expect(t.value, 123, reason: 'value did not actually change.');
|
| + return new Future(() {
|
| + expectPropertyChanges(records, 1);
|
| + expect(t.value, 123, reason: 'value did not actually change.');
|
| + });
|
| });
|
|
|
| - observeTest('notifyPropertyChange', () {
|
| + test('notifyPropertyChange', () {
|
| var t = createModel(123);
|
| var records = null;
|
| subs.add(t.changes.listen((r) { records = r; }));
|
| expect(t.notifyPropertyChange(#value, t.value, 42), 42,
|
| reason: 'notifyPropertyChange returns newValue');
|
|
|
| - performMicrotaskCheckpoint();
|
| - expectPropertyChanges(records, 1);
|
| - expect(t.value, 123, reason: 'value did not actually change.');
|
| + return new Future(() {
|
| + expectPropertyChanges(records, 1);
|
| + expect(t.value, 123, reason: 'value did not actually change.');
|
| + });
|
| });
|
| }
|
|
|
|
|