UNPKG

molstar

Version:

A comprehensive macromolecular library.

46 lines 2.22 kB
"use strict"; /** * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal <david.sehnal@gmail.com> */ Object.defineProperty(exports, "__esModule", { value: true }); var monadic_parser_1 = require("../monadic-parser"); describe('parser', function () { it('string', function () { var p = monadic_parser_1.MonadicParser.string('abc'); expect(p.parse('abc').success).toBe(true); expect(p.parse('cabc').success).toBe(false); }); it('alt', function () { var p = monadic_parser_1.MonadicParser.alt(monadic_parser_1.MonadicParser.string('abc'), monadic_parser_1.MonadicParser.string('123')); expect(p.parse('abc').success).toBe(true); expect(p.parse('123').success).toBe(true); expect(p.parse('123a').success).toBe(false); }); it('trim', function () { var p = monadic_parser_1.MonadicParser.string('abc').trim(monadic_parser_1.MonadicParser.whitespace); expect(p.tryParse(' abc ')).toBe('abc'); }); it('wrap', function () { var p = monadic_parser_1.MonadicParser.string('abc').wrap(monadic_parser_1.MonadicParser.string('('), monadic_parser_1.MonadicParser.string(')')); expect(p.tryParse('(abc)')).toBe('abc'); }); it('then', function () { var p = monadic_parser_1.MonadicParser.string('abc').then(monadic_parser_1.MonadicParser.string('123')); expect(p.tryParse('abc123')).toBe('123'); }); it('many', function () { var p = monadic_parser_1.MonadicParser.string('1').many(); expect(p.tryParse('111')).toEqual(['1', '1', '1']); }); it('times', function () { var p = monadic_parser_1.MonadicParser.string('1').times(2); expect(p.tryParse('11')).toEqual(['1', '1']); }); it('sepBy', function () { var p = monadic_parser_1.MonadicParser.sepBy(monadic_parser_1.MonadicParser.digits, monadic_parser_1.MonadicParser.string(',')).map(function (xs) { return xs.map(function (x) { return +x; }); }); expect(p.tryParse('1,2,3,4')).toEqual([1, 2, 3, 4]); }); }); //# sourceMappingURL=monadic-parser.spec.js.map