UNPKG

@masala/parser

Version:
396 lines (341 loc) 18 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; 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 }; } exports.default = { setUp: function setUp(done) { done(); }, 'expect (char) to be accepted': function expectCharToBeAccepted(test) { test.expect(1); // tests here test.equal(_index3.C.char('a').parse(_index2.default.ofString('a'), 0).isAccepted(), true, 'should be accepted.'); test.done(); }, 'expect (char) to be rejected': function expectCharToBeRejected(test) { test.expect(1); // tests here test.equal(_index3.C.char('a').parse(_index2.default.ofString('b'), 0).isAccepted(), false, 'should be rejected.'); test.done(); }, 'expect (char) to be refused': function expectCharToBeRefused(test) { test.expect(1); // tests here test.throws(function () { _index3.C.char('aa'); }); test.done(); }, 'expect (notChar) to be accepted': function expectNotCharToBeAccepted(test) { test.expect(1); // tests here test.equal(_index3.C.notChar('a').parse(_index2.default.ofString('b'), 0).isAccepted(), true, 'should be accepted.'); test.done(); }, 'expect (notChar) to be rejected': function expectNotCharToBeRejected(test) { test.expect(1); // tests here test.equal(_index3.C.notChar('a').parse(_index2.default.ofString('a'), 0).isAccepted(), false, 'should be rejected.'); test.done(); }, 'expect (notChar) to be refused': function expectNotCharToBeRefused(test) { test.expect(1); // tests here test.throws(function () { _index3.C.notChar('aa'); }); test.done(); }, 'expect (charNotIn) to be accepted': function expectCharNotInToBeAccepted(test) { test.expect(1); // tests here test.equal(_index3.C.charNotIn('a').parse(_index2.default.ofString('b'), 0).isAccepted(), true, 'should be accepted.'); test.done(); }, 'expect (charNotIn) to be rejected': function expectCharNotInToBeRejected(test) { test.expect(1); // tests here test.equal(_index3.C.charNotIn('a').parse(_index2.default.ofString('a'), 0).isAccepted(), false, 'should be rejected.'); test.done(); }, 'expect (charIn) to be accepted': function expectCharInToBeAccepted(test) { test.expect(1); // tests here test.equal(_index3.C.charIn('a').parse(_index2.default.ofString('a'), 0).isAccepted(), true, 'should be accepted.'); test.done(); }, 'expect (charIn) to be rejected': function expectCharInToBeRejected(test) { test.expect(1); // tests here test.equal(_index3.C.charIn('a').parse(_index2.default.ofString('b'), 0).isAccepted(), false, 'should be rejected.'); test.done(); }, 'expect (lowerCase) to be accepted': function expectLowerCaseToBeAccepted(test) { test.expect(1); // tests here test.equal(_index3.C.lowerCase().parse(_index2.default.ofString('a'), 0).isAccepted(), true, 'should be accepted.'); test.done(); }, 'expect (lowerCase) to be rejected': function expectLowerCaseToBeRejected(test) { test.expect(1); // tests here test.equal(_index3.C.lowerCase().parse(_index2.default.ofString('A'), 0).isAccepted(), false, 'should be rejected.'); test.done(); }, 'expect (upperCase) to be accepted': function expectUpperCaseToBeAccepted(test) { test.expect(1); // tests here test.equal(_index3.C.upperCase().parse(_index2.default.ofString('A'), 0).isAccepted(), true, 'should be accepted.'); test.done(); }, 'expect (upperCase) to be rejected': function expectUpperCaseToBeRejected(test) { test.expect(1); // tests here test.equal(_index3.C.upperCase().parse(_index2.default.ofString('z'), 0).isAccepted(), false, 'should be rejected.'); test.done(); }, 'expect upper (letter) to be accepted': function expectUpperLetterToBeAccepted(test) { test.expect(1); // tests here test.equal(_index3.C.letter().parse(_index2.default.ofString('A'), 0).isAccepted(), true, 'should be accepted.'); test.done(); }, 'expect lower (letter) to be accepted': function expectLowerLetterToBeAccepted(test) { test.expect(1); // tests here test.equal(_index3.C.letter().parse(_index2.default.ofString('z'), 0).isAccepted(), true, 'should be accepted.'); test.done(); }, 'expect space (letter) to be rejected': function expectSpaceLetterToBeRejected(test) { test.expect(1); // tests here test.equal(_index3.C.letter().parse(_index2.default.ofString(' '), 0).isAccepted(), false, 'should be rejected.'); test.done(); }, 'expect non (letter) to be rejected': function expectNonLetterToBeRejected(test) { test.expect(1); // tests here test.equal(_index3.C.letter().parse(_index2.default.ofString('0'), 0).isAccepted(), false, 'should be rejected.'); test.done(); }, 'expect occidental letter to be accepted': function expectOccidentalLetterToBeAccepted(test) { test.ok(_index3.C.letter().parse(_index2.default.ofString('a'), 0).isAccepted()); test.ok(_index3.C.letterAs().parse(_index2.default.ofString('a'), 0).isAccepted()); test.ok(_index3.C.letterAs(_index3.C.OCCIDENTAL_LETTER).parse(_index2.default.ofString('a')).isAccepted()); test.ok(_index3.C.letterAs(_index3.C.OCCIDENTAL_LETTER).parse(_index2.default.ofString('é')).isAccepted()); test.ok(!_index3.C.letterAs(_index3.C.OCCIDENTAL_LETTER).parse(_index2.default.ofString('Б')).isAccepted()); test.ok(!_index3.C.letterAs(_index3.C.OCCIDENTAL_LETTER).parse(_index2.default.ofString('÷')).isAccepted()); test.done(); }, 'expect occidental letters to be accepted': function expectOccidentalLettersToBeAccepted(test) { test.ok(_index3.C.letters().then(_index3.F.eos()).parse(_index2.default.ofString('aéÉ'), 0).isAccepted()); test.ok(_index3.C.lettersAs().then(_index3.F.eos()).parse(_index2.default.ofString('aéÉ'), 0).isAccepted()); test.ok(_index3.C.lettersAs(_index3.C.OCCIDENTAL_LETTER).parse(_index2.default.ofString('a')).isAccepted()); test.ok(_index3.C.lettersAs(_index3.C.OCCIDENTAL_LETTER).then(_index3.F.eos()).parse(_index2.default.ofString('éA')).isAccepted()); test.ok(!_index3.C.lettersAs(_index3.C.OCCIDENTAL_LETTER).then(_index3.F.eos()).parse(_index2.default.ofString('БAs')).isAccepted()); test.done(); }, 'expect ascii letter to be accepted': function expectAsciiLetterToBeAccepted(test) { test.ok(_index3.C.letterAs(_index3.C.ASCII_LETTER).parse(_index2.default.ofString('a'), 0).isAccepted()); test.ok(!_index3.C.letterAs(_index3.C.ASCII_LETTER).parse(_index2.default.ofString('é')).isAccepted()); test.ok(!_index3.C.letterAs(_index3.C.ASCII_LETTER).parse(_index2.default.ofString('Б')).isAccepted()); test.done(); }, 'expect ascii letters to be accepted': function expectAsciiLettersToBeAccepted(test) { test.ok(_index3.C.lettersAs(_index3.C.ASCII_LETTER).then(_index3.F.eos()).parse(_index2.default.ofString('a')).isAccepted()); /* test.ok( !C.lettersAs(C.ASCII_LETTER) .then(F.eos()) .parse(Streams.ofString('éA')) .isAccepted() ); test.ok( !C.lettersAs(C.ASCII_LETTER) .then(F.eos()) .parse(Streams.ofString('БAs')) .isAccepted() );*/ test.done(); }, 'expect utf8 letter to be accepted': function expectUtf8LetterToBeAccepted(test) { test.ok(_index3.C.letterAs(_index3.C.UTF8_LETTER).parse(_index2.default.ofString('a')).isAccepted()); test.ok(_index3.C.letterAs(_index3.C.UTF8_LETTER).parse(_index2.default.ofString('é')).isAccepted()); test.ok(_index3.C.letterAs(_index3.C.UTF8_LETTER).parse(_index2.default.ofString('Б')).isAccepted()); test.ok(!_index3.C.letterAs(_index3.C.UTF8_LETTER).parse(_index2.default.ofString('÷')).isAccepted()); test.done(); }, 'expect utf8 letters to be accepted': function expectUtf8LettersToBeAccepted(test) { test.ok(_index3.C.lettersAs(_index3.C.UTF8_LETTER).then(_index3.F.eos()).parse(_index2.default.ofString('a')).isAccepted()); test.ok(_index3.C.lettersAs(_index3.C.UTF8_LETTER).then(_index3.F.eos()).parse(_index2.default.ofString('éA')).isAccepted()); test.ok(_index3.C.lettersAs(_index3.C.UTF8_LETTER).then(_index3.F.eos()).parse(_index2.default.ofString('БAs')).isAccepted()); test.ok(!_index3.C.letterAs(_index3.C.UTF8_LETTER).then(_index3.F.eos()).parse(_index2.default.ofString('Б÷As')).isAccepted()); test.done(); }, 'expect unknown letters to be rejected': function expectUnknownLettersToBeRejected(test) { var line = _index2.default.ofString('a'); var errorFound = false; try { var combinator = _index3.C.lettersAs(Symbol('UNKNOWN')).then(_index3.F.eos()); combinator.parse(line); } catch (error) { errorFound = true; } test.ok(errorFound); test.done(); }, 'expect (letters) to be accepted': function expectLettersToBeAccepted(test) { test.expect(2); // tests here var parsing = _index3.C.letters().thenLeft(_index3.F.eos()).single().parse(_index2.default.ofString('someLetters'), 0); test.equal(parsing.isAccepted(), true, 'should be accepted.'); test.deepEqual(parsing.value, 'someLetters', 'should be equal.'); test.done(); }, 'expect (letters) with space to be rejected': function expectLettersWithSpaceToBeRejected(test) { test.expect(2); // tests here var parsing = _index3.C.letters().then(_index3.F.eos()).parse(_index2.default.ofString('some Letters'), 0); test.equal(parsing.isAccepted(), false, 'should be rejected.'); test.equal(parsing.offset, 4); test.done(); }, 'expect (letters) with number to be rejected': function expectLettersWithNumberToBeRejected(test) { test.expect(1); // tests here var parsing = _index3.C.letters().then(_index3.F.eos()).parse(_index2.default.ofString('some2Letters'), 0); test.equal(parsing.isAccepted(), false, 'should be accepted.'); test.done(); }, 'expect (letters) to return a string, not an array of letters': function expectLettersToReturnAStringNotAnArrayOfLetters(test) { test.expect(1); // tests here var parsing = _index3.C.letters().thenLeft(_index3.F.eos()).single().parse(_index2.default.ofString('someLetters'), 0); test.equal(parsing.value, 'someLetters', 'not a string'); test.done(); }, 'expect (string) to be accepted': function expectStringToBeAccepted(test) { test.expect(1); // tests here test.equal(_index3.C.string('Hello').parse(_index2.default.ofString('Hello'), 0).isAccepted(), true, 'should be accepted.'); test.done(); }, 'expect (string) to be rejected': function expectStringToBeRejected(test) { test.expect(1); // tests here test.equal(_index3.C.string('hello').parse(_index2.default.ofString('hell'), 0).isAccepted(), false, 'should be rejected.'); test.done(); }, 'test stringIn': function testStringIn(test) { var line = _index2.default.ofString('James Bond'); var combinator = _index3.C.stringIn(['The', 'James', 'Bond', 'series']); var value = combinator.parse(line).value; test.ok(typeof value === 'string'); test.ok(value === 'James'); test.done(); }, 'test stringIn Similar': function testStringInSimilar(test) { // Checks the search comes back after each search var line = _index2.default.ofString('Jack James Jane'); var combinator = _index3.C.stringIn(['Jamie', 'Jacko', 'Jack']); var parsing = combinator.parse(line); var value = parsing.value; test.equal(typeof value === 'undefined' ? 'undefined' : _typeof(value), 'string'); test.equal(value, 'Jack'); test.equal(parsing.offset, 'Jack'.length); test.done(); }, 'test stringIn one string sidecase': function testStringInOneStringSidecase(test) { var line = _index2.default.ofString('James'); var combinator = _index3.C.stringIn(['James']); var value = combinator.parse(line).value; test.ok(typeof value === 'string'); test.ok(value === 'James'); test.done(); }, 'test stringIn empty sidecase': function testStringInEmptySidecase(test) { var line = _index2.default.ofString('James'); var combinator = _index3.C.stringIn([]).then(_index3.F.eos()); var parsing = combinator.parse(line); test.ok(!parsing.isAccepted()); test.done(); }, 'test stringIn empty accept nothing sidecase': function testStringInEmptyAcceptNothingSidecase(test) { var line = _index2.default.ofString(''); var combinator = _index3.C.stringIn([]).then(_index3.F.eos()); var parsing = combinator.parse(line); test.ok(parsing.isAccepted()); test.done(); }, 'expect (notString) to be accepted': function expectNotStringToBeAccepted(test) { test.expect(1); // tests here test.equal(_index3.C.notString('**').parse(_index2.default.ofString('hello'), 0).isAccepted(), true, 'should be accepted.'); test.done(); }, 'expect (notString) to be h': function expectNotStringToBeH(test) { test.expect(1); // tests here test.equal(_index3.C.notString('**').parse(_index2.default.ofString('hello'), 0).value, 'h', 'should be h.'); test.done(); }, 'expect (notString) to be rejected': function expectNotStringToBeRejected(test) { test.expect(1); // tests here test.equal(_index3.C.notString('**').parse(_index2.default.ofString('**hello'), 0).isAccepted(), false, 'should be rejected.'); test.done(); }, 'expect accent to be accepted': function expectAccentToBeAccepted(test) { test.expect(1); // tests here test.equal(_index3.C.utf8Letter().parse(_index2.default.ofString('é'), 0).isAccepted(), true, 'should be accepted.'); test.done(); }, 'expect cyriliq to be accepted': function expectCyriliqToBeAccepted(test) { test.expect(2); // tests here //Белград //български test.equal(_index3.C.utf8Letter().parse(_index2.default.ofString('Б'), 0).isAccepted(), true, 'should be accepted.'); test.equal(_index3.C.utf8Letter().parse(_index2.default.ofString('б'), 0).isAccepted(), true, 'should be accepted.'); test.done(); }, 'expect dash to be rejected': function expectDashToBeRejected(test) { test.expect(1); // tests here test.equal(_index3.C.utf8Letter().parse(_index2.default.ofString('-'), 0).isAccepted(), false, 'should be rejected.'); test.done(); }, 'expect "nothing" to be rejected': function expectNothingToBeRejected(test) { test.expect(1); // tests here test.equal(_index3.C.utf8Letter().parse(_index2.default.ofString(''), 0).isAccepted(), false, 'should be rejected.'); test.done(); }, 'expect emoji to be accepted': function expectEmojiToBeAccepted(test) { // It's super important for emoji to test there is EOS just after, // because some emoji takes two \uWXYZ codes, where utf_8 does not test.ok(!_index3.C.emoji().then(_index3.F.eos()).parse(_index2.default.ofString('б'), 0).isAccepted()); test.ok(!_index3.C.emoji().then(_index3.F.eos()).parse(_index2.default.ofString('a'), 0).isAccepted()); // multiple emojis are also accepted as one test.ok(_index3.C.emoji().then(_index3.F.eos()).parse(_index2.default.ofString('🐵🐵✈️'), 0).isAccepted()); test.ok(_index3.C.emoji().then(_index3.F.eos()).parse(_index2.default.ofString('✈️'), 0).isAccepted()); // Emoji 5.0 released in June 2017. test.ok(_index3.C.emoji().then(_index3.F.eos()).parse(_index2.default.ofString('🥪')).isAccepted()); test.done(); }, 'expect subString to works': function expectSubStringToWorks(test) { var stream = _index2.default.ofString('James Bond'); var parser = _index3.C.subString(6).then(_index3.C.string('Bond')); var response = parser.parse(stream); test.deepEqual(['James ', 'Bond'], response.value.array()); // Unlike F.subStream, C.subString joins result test.ok(response.isEos()); test.done(); } }; //# sourceMappingURL=chars-bundle-test.js.map