Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(86)

Unified Diff: pkg/observe/test/observe_test.dart

Issue 20631002: [pkg:observe] Add support for explicit change notification, even on dirty-checked objects (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: revert pubspec Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« pkg/observe/lib/src/observable.dart ('K') | « pkg/observe/lib/src/observable.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/observe/test/observe_test.dart
diff --git a/pkg/observe/test/observe_test.dart b/pkg/observe/test/observe_test.dart
index db57674192ffab5a2fed25a8351a887b13f2f4ad..c898e43ee61330ecd867c8fd8e0092d87363082f 100644
--- a/pkg/observe/test/observe_test.dart
+++ b/pkg/observe/test/observe_test.dart
@@ -193,6 +193,49 @@ observeTests({bool watch: false}) {
}));
t.value = 42;
});
+
+ observeTest('cannot modify changes list', () {
+ var t = createModel(123);
+ var records = null;
+ subs.add(t.changes.listen((r) { records = r; }));
+ t.value = 42;
+
+ performMicrotaskCheckpoint();
+ expectChanges(records, _changedValue(1));
+
+ // Verify that mutation operations on the list fail:
+
+ expect(() {
+ records[0] = new PropertyChangeRecord(_VALUE);
+ }, throwsUnsupportedError);
+
+ expect(() { records.clear(); }, throwsUnsupportedError);
+
+ expect(() { records.length = 0; }, throwsUnsupportedError);
+ });
+
+ observeTest('notifyChange', () {
+ var t = createModel(123);
+ var records = [];
+ subs.add(t.changes.listen((r) { records.addAll(r); }));
+ t.notifyChange(new PropertyChangeRecord(_VALUE));
+
+ performMicrotaskCheckpoint();
+ expectChanges(records, _changedValue(1));
+ expect(t.value, 123, reason: 'value did not actually change.');
+ });
+
+ observeTest('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();
+ expectChanges(records, _changedValue(1));
+ expect(t.value, 123, reason: 'value did not actually change.');
+ });
}
_changedValue(len) => new List.filled(len, new PropertyChangeRecord(_VALUE));
« pkg/observe/lib/src/observable.dart ('K') | « pkg/observe/lib/src/observable.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698