Skip to content

Commit

Permalink
Test for extra input in cat function
Browse files Browse the repository at this point in the history
  • Loading branch information
mrijk committed Oct 28, 2017
1 parent 3af3406 commit e045de8
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 3 deletions.
18 changes: 16 additions & 2 deletions lib/cat.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,14 @@ function cat(...predicates) {
gen: () => tcg.array(pairs.map(([, p]) => gen(p))),
describe: () => [cat.name, ...describe(predicates)],
explain: function*(values, {via}) {
yield* explainLength(values, pairs, via);
yield* explainInsufficientInput(values, pairs, via);
yield* explainExtraInput(pairs, values, via);
yield* explainInvalid(values, pairs, via);
}
};
}

function* explainLength(values, specs, via) {
function* explainInsufficientInput(values, specs, via) {
// TODO: not correct for complicated cases. Use _conform
if (values.length < specs.length) {
const [key] = specs[values.length];
Expand All @@ -58,6 +59,19 @@ function* explainLength(values, specs, via) {
}
}

function* explainExtraInput(specs, values, via) {
if (values.length > specs.length) {
yield {
path: [],
reason: 'Extra input',
pred: ['cat', ...describe(specs)],
val: _.tail(values),
via,
'in': [1]
};
}
}

function* explainInvalid(values, specs, via) {
if (values.length !== specs.length) return;

Expand Down
17 changes: 16 additions & 1 deletion test/cat.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,22 @@ describe('Test the cat function', () => {
]
});
});


xit('explainData should reject extra input', () => {
expect(s.explainData('::ingredient', [2, ':teaspoon', 13])).to.be.eql({
problems: [
{
path: [],
reason: 'Extra input',
pred: ['cat', ':quantity', 'isNumber', ':unit', 'isString'],
val: [true],
via: ['::bool-or-string'],
'in': [1]
}
]
});
});

it('explainData should report about wrong type', () => {
expect(s.explainData('::ingredient', [2, 13])).to.eql({
problems: [
Expand Down

0 comments on commit e045de8

Please sign in to comment.