parser-combinator
Version:
Parser combinators
390 lines (335 loc) • 15.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _index = require('../../lib/stream/index');
var _index2 = _interopRequireDefault(_index);
var _index3 = require('../../lib/parsec/index');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/*
======== A Handy Little Nodeunit Reference ========
https://github.com/caolan/nodeunit
Test methods:
test.expect(numAssertions)
test.done()
Test assertions:
test.ok(value, [message])
test.equal(actual, expected, [message])
test.notEqual(actual, expected, [message])
test.deepEqual(actual, expected, [message])
test.notDeepEqual(actual, expected, [message])
test.strictEqual(actual, expected, [message])
test.notStrictEqual(actual, expected, [message])
test.throws(block, [error], [message])
test.doesNotThrow(block, [error], [message])
test.ifError(value)
*/
exports.default = {
setUp: function setUp(done) {
done();
},
'expect (map) to be accepted': function expectMapToBeAccepted(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').map(function (a) {
return a + 'b';
}).parse(_index2.default.ofString('a')).isAccepted(), true, 'should be accepted.');
test.done();
},
'expect (map) to be rejected': function expectMapToBeRejected(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').map(function (a) {
return a + 'b';
}).parse(_index2.default.ofString('b')).isAccepted(), false, 'should be rejected.');
test.done();
},
'expect (map) to be return ab': function expectMapToBeReturnAb(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').map(function (a) {
return a + 'b';
}).parse(_index2.default.ofString('a')).value, 'ab', 'should be accepted.');
test.done();
},
'expect (flatmap) to be accepted': function expectFlatmapToBeAccepted(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').flatmap(function () {
return _index3.F.returns('b');
}).parse(_index2.default.ofString('a')).isAccepted(), true, 'should be accepted.');
test.done();
},
'expect (flatmap) to be rejected ': function expectFlatmapToBeRejected(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').flatmap(function () {
return _index3.F.returns('b');
}).parse(_index2.default.ofString('b')).isAccepted(), false, 'should be rejected.');
test.done();
},
'expect (flatmap) to be return ab': function expectFlatmapToBeReturnAb(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').flatmap(function () {
return _index3.C.char('b');
}).parse(_index2.default.ofString('ab')).value, 'b', 'should be accepted.');
test.done();
},
'expect (flatmap) to be return a-b-c': function expectFlatmapToBeReturnABC(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').flatmap(function (aVal) {
return _index3.C.char('b').then(_index3.C.char('c')).map(function (bcVal) {
return aVal + '-' + bcVal.join('-');
});
}) //--> join 3 letters
.parse(_index2.default.ofString('abc')).value, 'a-b-c', 'should be accepted.');
test.done();
},
'expect (filter) to be accepted': function expectFilterToBeAccepted(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').filter(function (a) {
return a === 'a';
}).parse(_index2.default.ofString('a')).isAccepted(), true, 'should be accepted.');
test.done();
},
'expect (filter) to be rejected': function expectFilterToBeRejected(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').filter(function (a) {
return a === 'b';
}).parse(_index2.default.ofString('a')).isAccepted(), false, 'should be rejected.');
test.done();
},
'expect (match) to be accepted': function expectMatchToBeAccepted(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').match('a').parse(_index2.default.ofString('a')).isAccepted(), true, 'should be accepted.');
test.done();
},
'expect (match) to be rejected': function expectMatchToBeRejected(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').match('b').parse(_index2.default.ofString('a')).isAccepted(), false, 'should be rejected.');
test.done();
},
'expect (then) to be accepted': function expectThenToBeAccepted(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').then(_index3.C.char('b')).parse(_index2.default.ofString('ab')).isAccepted(), true, 'should be accepted.');
test.done();
},
'expect (then) to be build [a,b]': function expectThenToBeBuildAB(test) {
test.expect(1);
// tests here
test.deepEqual(_index3.C.char('a').then(_index3.C.char('b')).parse(_index2.default.ofString('ab')).value, ['a', 'b'], 'should be accepted.');
test.done();
},
'expect (then) left to be rejected': function expectThenLeftToBeRejected(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').then(_index3.C.char('b')).parse(_index2.default.ofString('cb')).isAccepted(), false, 'should be rejected.');
test.done();
},
'expect (then) right to be rejected': function expectThenRightToBeRejected(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').then(_index3.C.char('b')).parse(_index2.default.ofString('ac')).isAccepted(), false, 'should be rejected.');
test.done();
},
'expect (then) to return [a,b]': function expectThenToReturnAB(test) {
test.expect(1);
// tests here
test.deepEqual(_index3.C.char('a').then(_index3.C.char('b')).parse(_index2.default.ofString('ab')).value, ['a', 'b'], 'should be accepted.');
test.done();
},
'expect (thenLeft) to be accepted': function expectThenLeftToBeAccepted(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').thenLeft(_index3.C.char('b')).parse(_index2.default.ofString('ab')).isAccepted(), true, 'should be accepted.');
test.done();
},
'expect (thenLeft) to return a': function expectThenLeftToReturnA(test) {
test.expect(1);
// tests here
test.deepEqual(_index3.C.char('a').thenLeft(_index3.C.char('b')).parse(_index2.default.ofString('ab')).value, 'a', 'should be accepted.');
test.done();
},
'expect (thenLeft) to be rejected': function expectThenLeftToBeRejected(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').thenLeft(_index3.C.char('b')).parse(_index2.default.ofString('b')).isAccepted(), false, 'should be accepted.');
test.done();
},
'expect (thenRight) to be accepted': function expectThenRightToBeAccepted(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').thenRight(_index3.C.char('b')).parse(_index2.default.ofString('ab')).isAccepted(), true, 'should be accepted.');
test.done();
},
'expect (thenRight) to return a': function expectThenRightToReturnA(test) {
test.expect(1);
// tests here
test.deepEqual(_index3.C.char('a').thenRight(_index3.C.char('b')).parse(_index2.default.ofString('ab')).value, 'b', 'should be accepted.');
test.done();
},
'expect (thenRight) to be rejected': function expectThenRightToBeRejected(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').thenRight(_index3.C.char('b')).parse(_index2.default.ofString('b')).isAccepted(), false, 'should be accepted.');
test.done();
},
'expect (thenReturns) to be accepted': function expectThenReturnsToBeAccepted(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').thenReturns('b').parse(_index2.default.ofString('ab')).isAccepted(), true, 'should be accepted.');
test.done();
},
'expect (thenReturns) to return b': function expectThenReturnsToReturnB(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').thenReturns('b').parse(_index2.default.ofString('ab')).value, 'b', 'should be accepted.');
test.done();
},
'expect (thenReturns) to be rejected': function expectThenReturnsToBeRejected(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').thenReturns('b').parse(_index2.default.ofString('b')).isAccepted(), false, 'should be rejected.');
test.done();
},
'expect (or) to be accepted': function expectOrToBeAccepted(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').or(_index3.C.char('b')).parse(_index2.default.ofString('a')).isAccepted(), true, 'should be accepted.');
test.done();
},
'expect (or) bis to be accepted': function expectOrBisToBeAccepted(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').or(_index3.C.char('b')).parse(_index2.default.ofString('b')).isAccepted(), true, 'should be accepted.');
test.done();
},
'expect (or) to be rejected': function expectOrToBeRejected(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').or(_index3.C.char('b')).parse(_index2.default.ofString('c')).isAccepted(), false, 'should be rejected.');
test.done();
},
'expect (or) LL(1) to be rejected': function expectOrLL1ToBeRejected(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').then(_index3.C.char('b')).or(_index3.C.char('a')).parse(_index2.default.ofString('ac')).isAccepted(), false, 'should be rejected.');
test.done();
},
'expect (or) to return a': function expectOrToReturnA(test) {
test.expect(1);
// tests here
test.deepEqual(_index3.C.char('a').or(_index3.C.char('b')).parse(_index2.default.ofString('a')).value, 'a', 'should be accepted.');
test.done();
},
'expect (or) to return b': function expectOrToReturnB(test) {
test.expect(1);
// tests here
test.deepEqual(_index3.C.char('a').or(_index3.C.char('b')).parse(_index2.default.ofString('b')).value, 'b', 'should be accepted.');
test.done();
},
'expect (then.or) left to be rejected': function expectThenOrLeftToBeRejected(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').then(_index3.C.char('b').or(_index3.C.char('c'))).parse(_index2.default.ofString('ad')).isAccepted(), false, 'should be rejected.');
test.done();
},
'expect (then.or) left to be consumed': function expectThenOrLeftToBeConsumed(test) {
test.expect(1);
// tests here
test.equal(_index3.C.char('a').then(_index3.C.char('b').or(_index3.C.char('c'))).parse(_index2.default.ofString('ad')).consumed, true, 'should be consumed.');
test.done();
},
'expect (opt) some to accepted': function expectOptSomeToAccepted(test) {
test.expect(1);
// tests here
test.deepEqual(_index3.C.char('a').opt().parse(_index2.default.ofString('a')).isAccepted(), true, 'should be accepted.');
test.done();
},
'expect (opt) some to return some a': function expectOptSomeToReturnSomeA(test) {
test.expect(1);
// tests here
test.deepEqual(_index3.C.char('a').opt().parse(_index2.default.ofString('a')).value.get(), 'a', 'should be a.');
test.done();
},
'expect (opt) none to accepted': function expectOptNoneToAccepted(test) {
test.expect(1);
// tests here
test.deepEqual(_index3.C.char('a').opt().parse(_index2.default.ofString('b')).isAccepted(), true, 'should be accepted.');
test.done();
},
'expect (opt) none to return none': function expectOptNoneToReturnNone(test) {
test.expect(1);
// tests here
test.deepEqual(_index3.C.char('a').opt().parse(_index2.default.ofString('b')).value.isPresent(), false, 'should be accepted but none.');
test.done();
},
'expect (rep) to accepted': function expectRepToAccepted(test) {
test.expect(1);
// tests here
test.deepEqual(_index3.C.char('a').rep().parse(_index2.default.ofString('a')).isAccepted(), true, 'should be accepted.');
test.done();
},
'expect (rep) to rejected': function expectRepToRejected(test) {
test.expect(1);
// tests here
test.deepEqual(_index3.C.char('a').rep().parse(_index2.default.ofString('b')).isAccepted(), false, 'should be rejected.');
test.done();
},
'expect (rep) mutiple to accepted': function expectRepMutipleToAccepted(test) {
test.expect(1);
// tests here
test.deepEqual(_index3.C.char('a').rep().parse(_index2.default.ofString('aaaabbb')).isAccepted(), true, 'should be accepted.');
test.done();
},
'expect (rep) mutiple to return [a,a,a,a]': function expectRepMutipleToReturnAAAA(test) {
test.expect(1);
// tests here
test.deepEqual(_index3.C.char('a').rep().parse(_index2.default.ofString('aaaabbb')).value.array(), ['a', 'a', 'a', 'a'], 'should be accepted.');
test.done();
},
'expect (optrep) to accepted': function expectOptrepToAccepted(test) {
test.expect(1);
// tests here
test.deepEqual(_index3.C.char('a').optrep().parse(_index2.default.ofString('a')).isAccepted(), true, 'should be accepted.');
test.done();
},
'expect (optrep) none to accepted': function expectOptrepNoneToAccepted(test) {
test.expect(1);
// tests here
test.deepEqual(_index3.C.char('a').optrep().parse(_index2.default.ofString('b')).isAccepted(), true, 'should be accepted.');
test.done();
},
'expect (optrep) multiple to accepted': function expectOptrepMultipleToAccepted(test) {
test.expect(1);
// tests here
test.deepEqual(_index3.C.char('a').optrep().parse(_index2.default.ofString('aaaabbb')).isAccepted(), true, 'should be accepted.');
test.done();
},
'expect (optrep) multiple to return some [a,a,a,a]': function expectOptrepMultipleToReturnSomeAAAA(test) {
test.expect(1);
// tests here
test.deepEqual(_index3.C.char('a').optrep().parse(_index2.default.ofString('aaaabbb')).value.array(), ['a', 'a', 'a', 'a'], 'should be accepted.');
test.done();
},
'expect (optrep) to return none': function expectOptrepToReturnNone(test) {
test.expect(1);
// tests here
test.deepEqual(_index3.C.char('a').optrep().parse(_index2.default.ofString('bbb')).value.array(), [], 'should be accepted.');
test.done();
},
'expect (optrep) to return [b,b,b]': function expectOptrepToReturnBBB(test) {
test.expect(1);
// tests here
test.deepEqual(_index3.C.notChar('a').optrep().parse(_index2.default.ofString('bbba')).value.array(), ['b', 'b', 'b'], 'should be accepted.');
test.done();
}
};
//# sourceMappingURL=parser_core_default_test.js.map