UNPKG

@masala/parser

Version:
118 lines (76 loc) 3.41 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _index = require('../../lib/stream/index'); var _index2 = _interopRequireDefault(_index); var _parsec = require('../../lib/parsec'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } ; exports.default = { setUp: function setUp(done) { done(); }, 'response ok with a StringStream': function responseOkWithAStringStream(test) { var stream = _index2.default.ofString('The world is a vampire'); var parser = _parsec.C.string('The'); var response = parser.parse(stream, 0); test.ok(response.isAccepted()); test.ok(!response.isEos()); test.equal(response.offset, 3); test.done(); }, 'response ok inside a StringStream': function responseOkInsideAStringStream(test) { var stream = _index2.default.ofString('The world is a vampire'); var parser = _parsec.C.string('world'); var response = parser.parse(stream, 4); test.ok(response.isAccepted()); test.ok(!response.isEos()); test.equal(response.offset, 9); test.done(); }, 'response ok completing a StringStream': function responseOkCompletingAStringStream(test) { var stream = _index2.default.ofString('The world is a vampire'); var parser = _parsec.C.letter().or(_parsec.C.char(' ')).rep(); var response = parser.parse(stream); test.ok(response.isAccepted()); test.ok(response.isEos()); test.equal(response.offset, 22); test.done(); }, 'response fails at StringStream start': function responseFailsAtStringStreamStart(test) { var stream = _index2.default.ofString('The world is a vampire'); var parser = _parsec.C.string('That'); var response = parser.parse(stream); test.ok(!response.isAccepted()); test.equal(response.offset, 0); test.done(); }, 'response fails inside a StringStream': function responseFailsInsideAStringStream(test) { var stream = _index2.default.ofString('abc de'); var parser = _parsec.C.string('abc').then(_parsec.C.string('fails')); var response = parser.parse(stream); test.ok(!response.isAccepted()); test.equal(response.offset, 3); test.done(); }, 'response passes the StringStream': function responsePassesTheStringStream(test) { var stream = _index2.default.ofString('abc de'); var parser = _parsec.C.letter().or(_parsec.C.char(' ')).rep().then(_parsec.C.string('!!!')); var response = parser.parse(stream); test.ok(!response.isAccepted()); // because an error has NEVER stream consumed test.ok(!response.isEos()); test.equal(response.offset, stream.source.length); test.done(); }, 'response with a failed try is rejected, and offset is 0': function responseWithAFailedTryIsRejectedAndOffsetIs0(test) { var stream = _index2.default.ofString('abc de'); var parser = _parsec.F.try(_parsec.C.string('abc').then(_parsec.C.char('x'))).or(_parsec.C.string('x')); var response = parser.parse(stream); test.ok(!response.isAccepted()); test.equal(response.offset, 0); test.done(); } }; //# sourceMappingURL=offset-test.js.map