From 925ebb7bea520176321fdf7312debbcfab454a0a Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Sun, 21 Oct 2018 13:38:50 +0100 Subject: [PATCH] Convert to Immutable.js collections on the way in to Structures etc. --- src/skeleton.js | 3 ++- src/struct.js | 2 +- test/test-skeleton.js | 58 +++++++++++++++++++++---------------------- 3 files changed, 32 insertions(+), 31 deletions(-) diff --git a/src/skeleton.js b/src/skeleton.js index a5f0522..9ea1692 100644 --- a/src/skeleton.js +++ b/src/skeleton.js @@ -222,6 +222,7 @@ function del_from_handler(h, vs) { Index.prototype.adjustAssertion = function(outerValue, delta) { let net; + outerValue = Immutable.fromJS(outerValue); ({bag: this.allAssertions, net: net} = Bag.change(this.allAssertions, outerValue, delta)); switch (net) { case Bag.ABSENT_TO_PRESENT: @@ -237,7 +238,7 @@ Index.prototype.addAssertion = function(v) { this.adjustAssertion(v, +1); }; Index.prototype.removeAssertion = function (v) { this.adjustAssertion(v, -1); }; Index.prototype.sendMessage = function(v) { - this.root.modify(v, ()=>{}, ()=>{}, (h, vs) => { + this.root.modify(Immutable.fromJS(v), ()=>{}, ()=>{}, (h, vs) => { h.callbacks.forEach((cb) => { cb(EVENT_MESSAGE, vs); return true; diff --git a/src/struct.js b/src/struct.js index 3566f77..1f2c573 100644 --- a/src/struct.js +++ b/src/struct.js @@ -54,7 +54,7 @@ function Structure(meta, fields) { this.length = meta.arity; this.fields = fields.slice(0); for (var i = 0; i < fields.length; i++) { - this[i] = fields[i]; + this[i] = fields[i] = Immutable.fromJS(fields[i]); } } diff --git a/test/test-skeleton.js b/test/test-skeleton.js index b2e1eec..63b42c6 100644 --- a/test/test-skeleton.js +++ b/test/test-skeleton.js @@ -39,17 +39,17 @@ describe('skeleton tests', () => { Immutable.fromJS([]), eventCallback(traceHolder, "2-EVENT")); - i.addAssertion(Immutable.fromJS(["hi", 123])); - i.addAssertion(Immutable.fromJS(["hi", 234])); - i.removeAssertion(Immutable.fromJS(["hi", 123])); - i.removeAssertion(Immutable.fromJS(["hi", 234])); + i.addAssertion(["hi", 123]); + i.addAssertion(["hi", 234]); + i.removeAssertion(["hi", 123]); + i.removeAssertion(["hi", 234]); }); it('should have one add and one remove', () => { expect(trace) .to.equal(Immutable.List([ - Event("2-EVENT", Skeleton.EVENT_ADDED, Immutable.List([])), - Event("2-EVENT", Skeleton.EVENT_REMOVED, Immutable.List([]))])); + Event("2-EVENT", Skeleton.EVENT_ADDED, []), + Event("2-EVENT", Skeleton.EVENT_REMOVED, [])])); }); }); @@ -66,21 +66,21 @@ describe('skeleton tests', () => { Immutable.fromJS([]), eventCallback(traceHolder, "2-EVENT")); - i.addAssertion(Immutable.fromJS(["hi", 123, 234])); - i.addAssertion(Immutable.fromJS(["hi", 999, 999])); - i.addAssertion(Immutable.fromJS(["hi", 123])); - i.addAssertion(Immutable.fromJS(["hi", 123, 234])); - i.sendMessage(Immutable.fromJS(["hi", 303])); - i.sendMessage(Immutable.fromJS(["hi", 303, 404])); - i.sendMessage(Immutable.fromJS(["hi", 303, 404, 808])); - i.removeAssertion(Immutable.fromJS(["hi", 123, 234])); - i.removeAssertion(Immutable.fromJS(["hi", 999, 999])); - i.removeAssertion(Immutable.fromJS(["hi", 123, 234])); - i.addAssertion(Immutable.fromJS(["hi", 123])); - i.addAssertion(Immutable.fromJS(["hi", 234])); - i.removeAssertion(Immutable.fromJS(["hi", 123])); - i.removeAssertion(Immutable.fromJS(["hi", 123])); - i.removeAssertion(Immutable.fromJS(["hi", 234])); + i.addAssertion(["hi", 123, 234]); + i.addAssertion(["hi", 999, 999]); + i.addAssertion(["hi", 123]); + i.addAssertion(["hi", 123, 234]); + i.sendMessage(["hi", 303]); + i.sendMessage(["hi", 303, 404]); + i.sendMessage(["hi", 303, 404, 808]); + i.removeAssertion(["hi", 123, 234]); + i.removeAssertion(["hi", 999, 999]); + i.removeAssertion(["hi", 123, 234]); + i.addAssertion(["hi", 123]); + i.addAssertion(["hi", 234]); + i.removeAssertion(["hi", 123]); + i.removeAssertion(["hi", 123]); + i.removeAssertion(["hi", 234]); }); it('should have 8 entries', () => { @@ -89,18 +89,18 @@ describe('skeleton tests', () => { it('should have a correct 3-EVENT subtrace', () => { expect(trace.filter((e) => { return e[0] === "3-EVENT"; })) .to.equal(Immutable.List([ - Event("3-EVENT", Skeleton.EVENT_ADDED, Immutable.List([123, 234])), - Event("3-EVENT", Skeleton.EVENT_ADDED, Immutable.List([999, 999])), - Event("3-EVENT", Skeleton.EVENT_MESSAGE, Immutable.List([303, 404])), - Event("3-EVENT", Skeleton.EVENT_REMOVED, Immutable.List([999, 999])), - Event("3-EVENT", Skeleton.EVENT_REMOVED, Immutable.List([123, 234]))])); + Event("3-EVENT", Skeleton.EVENT_ADDED, [123, 234]), + Event("3-EVENT", Skeleton.EVENT_ADDED, [999, 999]), + Event("3-EVENT", Skeleton.EVENT_MESSAGE, [303, 404]), + Event("3-EVENT", Skeleton.EVENT_REMOVED, [999, 999]), + Event("3-EVENT", Skeleton.EVENT_REMOVED, [123, 234])])); }); it('should have a correct 2-EVENT subtrace', () => { expect(trace.filter((e) => { return e[0] === "2-EVENT"; })) .to.equal(Immutable.List([ - Event("2-EVENT", Skeleton.EVENT_ADDED, Immutable.List([])), - Event("2-EVENT", Skeleton.EVENT_MESSAGE, Immutable.List([])), - Event("2-EVENT", Skeleton.EVENT_REMOVED, Immutable.List([]))])); + Event("2-EVENT", Skeleton.EVENT_ADDED, []), + Event("2-EVENT", Skeleton.EVENT_MESSAGE, []), + Event("2-EVENT", Skeleton.EVENT_REMOVED, [])])); }); // trace.forEach((e) => { console.log(e.toString()) }); });