From 98be35066bce838cb179b5330445271bbe3f1e84 Mon Sep 17 00:00:00 2001 From: Sandro Hawke Date: Fri, 28 Dec 2018 16:10:02 -0500 Subject: [PATCH] add a few more tests, improve readme on SmartPath --- README.md | 7 ++++++- test-smart-patch.js | 13 +++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4389f2c..9269045 100644 --- a/README.md +++ b/README.md @@ -117,7 +117,8 @@ implementations: The helper class KeyedSet.SmartPatch acts like an array of change events, but it "cancels" events that would have no effect when combined. It can be used to record change events and then replay them -more efficiently. +more efficiently, especially in cases where there are rapid temporary +changes which do not need to be propagated. ```js const KeyedSet = require('keyed-set') @@ -142,5 +143,9 @@ s.clear() p.length // => 1 No need to remember the adds at all ``` +Events can be de-queued in an appropriate order using p.shift(). New +events can safely be added between calls to p.shift(), which returns +`undefined` whenever there are no queued events. + [npm-image]: https://img.shields.io/npm/v/keyed-set.svg?style=flat-square [npm-url]: https://npmjs.org/package/keyed-set diff --git a/test-smart-patch.js b/test-smart-patch.js index 8d3f68c..6ca37f0 100644 --- a/test-smart-patch.js +++ b/test-smart-patch.js @@ -145,6 +145,19 @@ test('shift', t => { t.deepEqual(p.shift(), { type: 'clear' }) t.deepEqual(p.shift(), undefined) + s.addAll([1, 2, 3]) + t.deepEqual(p.shift(), { type: 'add', key: '1', item: 1 }) + t.deepEqual(p.shift(), { type: 'add', key: '2', item: 2 }) + s.addAll([4, 5]) + t.deepEqual(p.shift(), { type: 'add', key: '3', item: 3 }) + t.deepEqual(p.shift(), { type: 'add', key: '4', item: 4 }) + s.clear() + t.deepEqual(p.shift(), { type: 'clear' }) + s.addAll([3, 4]) + t.deepEqual(p.shift(), { type: 'add', key: '3', item: 3 }) + t.deepEqual(p.shift(), { type: 'add', key: '4', item: 4 }) + t.deepEqual(p.shift(), undefined) + t.end() })