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

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

Issue 53743002: introduce ObservableList.listChanges to keep list changes separate from property changes (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 2 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
« no previous file with comments | « pkg/observe/lib/src/path_observer.dart ('k') | pkg/observe/test/observable_list_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/observe/test/list_change_test.dart
diff --git a/pkg/observe/test/list_change_test.dart b/pkg/observe/test/list_change_test.dart
index 8f44357774df113f943ad55cbfd9144f31363aba..1375b1b32f271204705d4cd0b29df05e651f0c0c 100644
--- a/pkg/observe/test/list_change_test.dart
+++ b/pkg/observe/test/list_change_test.dart
@@ -18,15 +18,21 @@ main() {
// TODO(jmesserly): port or write array fuzzer tests
listChangeTests() {
StreamSubscription sub;
+ var model;
- tearDown(() { sub.cancel(); });
+ tearDown(() {
+ sub.cancel();
+ model = null;
+ });
+
+ _delta(i, r, a) => new ListChangeRecord(model, i, removed: r, addedCount: a);
observeTest('sequential adds', () {
- var model = toObservable([]);
+ model = toObservable([]);
model.add(0);
var summary;
- sub = model.changes.listen((r) { summary = _filter(r); });
+ sub = model.listChanges.listen((r) { summary = r; });
model.add(1);
model.add(2);
@@ -34,25 +40,25 @@ listChangeTests() {
expect(summary, null);
performMicrotaskCheckpoint();
- expectChanges(summary, [_delta(1, 0, 2)]);
+ expectChanges(summary, [_delta(1, [], 2)]);
});
observeTest('List Splice Truncate And Expand With Length', () {
- var model = toObservable(['a', 'b', 'c', 'd', 'e']);
+ model = toObservable(['a', 'b', 'c', 'd', 'e']);
var summary;
- sub = model.changes.listen((r) { summary = _filter(r); });
+ sub = model.listChanges.listen((r) { summary = r; });
model.length = 2;
performMicrotaskCheckpoint();
- expectChanges(summary, [_delta(2, 3, 0)]);
+ expectChanges(summary, [_delta(2, ['c', 'd', 'e'], 0)]);
summary = null;
model.length = 5;
performMicrotaskCheckpoint();
- expectChanges(summary, [_delta(2, 0, 3)]);
+ expectChanges(summary, [_delta(2, [], 3)]);
});
group('List deltas can be applied', () {
@@ -60,7 +66,7 @@ listChangeTests() {
var summary = null;
observeArray(model) {
- sub = model.changes.listen((records) { summary = _filter(records); });
+ sub = model.listChanges.listen((r) { summary = r; });
}
applyAndCheckDeltas(model, copy) {
@@ -69,7 +75,7 @@ listChangeTests() {
// apply deltas to the copy
for (var delta in summary) {
- copy.removeRange(delta.index, delta.index + delta.removedCount);
+ copy.removeRange(delta.index, delta.index + delta.removed.length);
for (int i = delta.addedCount - 1; i >= 0; i--) {
copy.insert(delta.index, model[delta.index + i]);
}
@@ -233,7 +239,7 @@ listChangeTests() {
var summary = null;
observeArray(model) {
- sub = model.changes.listen((records) { summary = _filter(records); });
+ sub = model.listChanges.listen((r) { summary = r; });
}
assertEditDistance(orig, expectDistance) {
@@ -243,7 +249,7 @@ listChangeTests() {
if (summary != null) {
for (var delta in summary) {
- actualDistance += delta.addedCount + delta.removedCount;
+ actualDistance += delta.addedCount + delta.removed.length;
}
}
@@ -262,10 +268,7 @@ listChangeTests() {
observeArray(model);
model.length = 0;
model.addAll(['1', '2', '3', 'y', 'y', 'y', 'y']);
- // Note: unlike the JS implementation, we don't perform a full diff.
- // The change records are computed with no regards to the *contents* of
- // the array. Thus, we get 14 instead of 8.
- assertEditDistance(model, 14);
+ assertEditDistance(model, 7);
});
observeTest('truncate and add, sharing a discontiguous block', () {
@@ -273,10 +276,7 @@ listChangeTests() {
observeArray(model);
model.length = 0;
model.addAll(['a', '2', 'y', 'y', '4', '5', 'z', 'z']);
- // Note: unlike the JS implementation, we don't perform a full diff.
- // The change records are computed with no regards to the *contents* of
- // the array. Thus, we get 13 instead of 7.
- assertEditDistance(model, 13);
+ assertEditDistance(model, 8);
});
observeTest('insert at beginning and end', () {
@@ -289,6 +289,3 @@ listChangeTests() {
});
});
}
-
-_delta(i, r, a) => new ListChangeRecord(i, removedCount: r, addedCount: a);
-_filter(records) => records.where((r) => r is ListChangeRecord).toList();
« no previous file with comments | « pkg/observe/lib/src/path_observer.dart ('k') | pkg/observe/test/observable_list_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698