Fix failing tests

This commit is contained in:
Tony Garnock-Jones 2018-12-14 12:37:21 +00:00
parent 1f0bb77522
commit 14bb7f3d6f
1 changed files with 12 additions and 6 deletions

View File

@ -24,7 +24,7 @@ chai.use(require('chai-immutable'));
const Immutable = require('immutable'); const Immutable = require('immutable');
const Syndicate = require('../src/index.js'); const Syndicate = require('../src/index.js');
const { Seal, Skeleton, Capture, Discard, Record } = Syndicate; const { Seal, Skeleton, Capture, Discard, Record, Observe } = Syndicate;
const __ = Discard(); const __ = Discard();
const _$ = Capture(Discard()); const _$ = Capture(Discard());
@ -58,14 +58,16 @@ describe('skeleton', () => {
describe('pattern analysis', () => { describe('pattern analysis', () => {
it('should handle leaf captures', () => { it('should handle leaf captures', () => {
expect(Immutable.fromJS(_analyzeAssertion(A(B(_$), _$)))) expect(Immutable.fromJS(_analyzeAssertion(A(B(_$), _$))))
.to.equal(Immutable.fromJS({skeleton: [A.constructorInfo, [B.constructorInfo, null], null], .to.equal(Immutable.fromJS({assertion: Observe(A(B(_$), _$)),
skeleton: [A.constructorInfo, [B.constructorInfo, null], null],
constPaths: Immutable.fromJS([]), constPaths: Immutable.fromJS([]),
constVals: Immutable.fromJS([]), constVals: Immutable.fromJS([]),
capturePaths: Immutable.fromJS([[0, 0], [1]])})); capturePaths: Immutable.fromJS([[0, 0], [1]])}));
}); });
it('should handle atomic constants', () => { it('should handle atomic constants', () => {
expect(Immutable.fromJS(_analyzeAssertion(A(B("x"), _$)))) expect(Immutable.fromJS(_analyzeAssertion(A(B("x"), _$))))
.to.equal(Immutable.fromJS({skeleton: [A.constructorInfo, [B.constructorInfo, null], null], .to.equal(Immutable.fromJS({assertion: Observe(A(B("x"), _$)),
skeleton: [A.constructorInfo, [B.constructorInfo, null], null],
constPaths: Immutable.fromJS([[0, 0]]), constPaths: Immutable.fromJS([[0, 0]]),
constVals: Immutable.fromJS(["x"]), constVals: Immutable.fromJS(["x"]),
capturePaths: Immutable.fromJS([[1]])})); capturePaths: Immutable.fromJS([[1]])}));
@ -80,6 +82,7 @@ describe('skeleton', () => {
const complexPlaceholder = new Object(); const complexPlaceholder = new Object();
const analysis = Immutable.fromJS(_analyzeAssertion(A(complexPlaceholder, C(_$)))); const analysis = Immutable.fromJS(_analyzeAssertion(A(complexPlaceholder, C(_$))));
const expected = Immutable.fromJS({ const expected = Immutable.fromJS({
assertion: Observe(A(complexPlaceholder, C(_$))),
skeleton: [A.constructorInfo, null, [C.constructorInfo, null]], skeleton: [A.constructorInfo, null, [C.constructorInfo, null]],
constPaths: Immutable.fromJS([[0]]), constPaths: Immutable.fromJS([[0]]),
constVals: Immutable.fromJS([complexPlaceholder]), constVals: Immutable.fromJS([complexPlaceholder]),
@ -95,7 +98,8 @@ describe('skeleton', () => {
// that situation without the static analysis half of the code. // that situation without the static analysis half of the code.
// TODO later. // TODO later.
expect(Immutable.fromJS(_analyzeAssertion(A(B(B("y")), Capture(C(__)))))) expect(Immutable.fromJS(_analyzeAssertion(A(B(B("y")), Capture(C(__))))))
.to.equal(Immutable.fromJS({skeleton: [A.constructorInfo, .to.equal(Immutable.fromJS({assertion: Observe(A(B(B("y")), Capture(C(__)))),
skeleton: [A.constructorInfo,
[B.constructorInfo, [B.constructorInfo, null]], [B.constructorInfo, [B.constructorInfo, null]],
[C.constructorInfo, null]], [C.constructorInfo, null]],
constPaths: Immutable.fromJS([[0, 0, 0]]), constPaths: Immutable.fromJS([[0, 0, 0]]),
@ -104,14 +108,16 @@ describe('skeleton', () => {
}); });
it('should handle list patterns with discards', () => { it('should handle list patterns with discards', () => {
expect(Immutable.fromJS(_analyzeAssertion([__, __]))) expect(Immutable.fromJS(_analyzeAssertion([__, __])))
.to.equal(Immutable.fromJS({skeleton: [2, null, null], .to.equal(Immutable.fromJS({assertion: Observe([__, __]),
skeleton: [2, null, null],
constPaths: Immutable.fromJS([]), constPaths: Immutable.fromJS([]),
constVals: Immutable.fromJS([]), constVals: Immutable.fromJS([]),
capturePaths: Immutable.fromJS([])})); capturePaths: Immutable.fromJS([])}));
}); });
it('should handle list patterns with constants and captures', () => { it('should handle list patterns with constants and captures', () => {
expect(Immutable.fromJS(_analyzeAssertion(["hi", _$, _$]))) expect(Immutable.fromJS(_analyzeAssertion(["hi", _$, _$])))
.to.equal(Immutable.fromJS({skeleton: [3, null, null, null], .to.equal(Immutable.fromJS({assertion: Observe(["hi", _$, _$]),
skeleton: [3, null, null, null],
constPaths: Immutable.fromJS([[0]]), constPaths: Immutable.fromJS([[0]]),
constVals: Immutable.fromJS(["hi"]), constVals: Immutable.fromJS(["hi"]),
capturePaths: Immutable.fromJS([[1],[2]])})); capturePaths: Immutable.fromJS([[1],[2]])}));