UNPKG

@informalsystems/quint

Version:

Core tool for the Quint specification language

148 lines 6.08 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const mocha_1 = require("mocha"); const chai_1 = require("chai"); const chalk_1 = __importDefault(require("chalk")); const prettierimp_1 = require("../src/prettierimp"); // define the standard line break to avoid repetition const br = (0, prettierimp_1.line)('\n', ' '); (0, mocha_1.describe)('prettierimp', () => { (0, mocha_1.it)('page 2 tests', () => { const doc = [(0, prettierimp_1.text)('[begin'), br, (0, prettierimp_1.group)([(0, prettierimp_1.text)('[stmt;'), br, (0, prettierimp_1.text)('stmt;'), br, (0, prettierimp_1.text)('stmt;]')]), br, (0, prettierimp_1.text)('end]')]; const result1 = (0, prettierimp_1.format)(60, 0, doc); (0, chai_1.expect)(result1).to.equal('[begin [stmt; stmt; stmt;] end]'); const result2 = (0, prettierimp_1.format)(30, 0, doc); const expected2 = `[begin [stmt; stmt; stmt;] end]`; (0, chai_1.expect)(result2).to.equal(expected2); const result3 = (0, prettierimp_1.format)(10, 0, doc); const expected3 = `[begin [stmt; stmt; stmt;] end]`; (0, chai_1.expect)(result3).to.equal(expected3); }); (0, mocha_1.it)('page 3 tests', () => { const doc = [ (0, prettierimp_1.text)('[begin'), (0, prettierimp_1.nest)(' ', [br, (0, prettierimp_1.group)([(0, prettierimp_1.text)('[stmt;'), br, (0, prettierimp_1.text)('stmt;'), br, (0, prettierimp_1.text)('stmt;]')])]), br, (0, prettierimp_1.text)('end]'), ]; const result1 = (0, prettierimp_1.format)(50, 0, doc); (0, chai_1.expect)(result1).to.equal('[begin [stmt; stmt; stmt;] end]'); const result2 = (0, prettierimp_1.format)(30, 0, doc); const expected2 = `[begin [stmt; stmt; stmt;] end]`; (0, chai_1.expect)(result2).to.equal(expected2); const result3 = (0, prettierimp_1.format)(10, 0, doc); const expected3 = `[begin [stmt; stmt; stmt;] end]`; (0, chai_1.expect)(result3).to.equal(expected3); }); (0, mocha_1.it)('page 6 tests', () => { const binop = (left, op, right) => { return (0, prettierimp_1.group)((0, prettierimp_1.nest)(' ', [(0, prettierimp_1.group)([(0, prettierimp_1.text)(left), br, (0, prettierimp_1.text)(op)]), br, (0, prettierimp_1.text)(right)])); }; const cond = binop('a', '==', 'b'); const expr1 = binop('a', '<<', '2'); const expr2 = binop('a', '+', 'b'); const ifthen = (c, e1, e2) => { return (0, prettierimp_1.group)([ (0, prettierimp_1.group)((0, prettierimp_1.nest)(' ', [(0, prettierimp_1.text)('if'), br, c])), br, (0, prettierimp_1.group)((0, prettierimp_1.nest)(' ', [(0, prettierimp_1.text)('then'), br, e1])), br, (0, prettierimp_1.group)((0, prettierimp_1.nest)(' ', [(0, prettierimp_1.text)('else'), br, e2])), ]); }; const doc = ifthen(cond, expr1, expr2); const result32 = (0, prettierimp_1.format)(32, 0, doc); (0, chai_1.expect)(result32).to.equal('if a == b then a << 2 else a + b'); const result15 = (0, prettierimp_1.format)(15, 0, doc); const expected15 = `if a == b then a << 2 else a + b`; (0, chai_1.expect)(result15).to.equal(expected15); const result10 = (0, prettierimp_1.format)(10, 0, doc); const expected10 = `if a == b then a << 2 else a + b`; (0, chai_1.expect)(result10).to.equal(expected10); const result8 = (0, prettierimp_1.format)(8, 0, doc); const expected8 = `if a == b then a << 2 else a + b`; (0, chai_1.expect)(result8).to.equal(expected8); const result7 = (0, prettierimp_1.format)(7, 0, doc); const expected7 = `if a == b then a << 2 else a + b`; (0, chai_1.expect)(result7).to.equal(expected7); const result6 = (0, prettierimp_1.format)(6, 0, doc); const expected6 = `if a == b then a << 2 else a + b`; (0, chai_1.expect)(result6).to.equal(expected6); }); (0, mocha_1.it)('page 2 tests with colors', () => { // check that the color codes do not affect the string length // when computing the layout const y = chalk_1.default.yellow; const b = chalk_1.default.bold; const doc = [ (0, prettierimp_1.richtext)(y, '[begin'), br, (0, prettierimp_1.group)([(0, prettierimp_1.text)('[stmt;'), br, (0, prettierimp_1.richtext)(b, 'stmt;'), br, (0, prettierimp_1.text)('stmt;]')]), br, (0, prettierimp_1.richtext)(y, 'end]'), ]; const result1 = (0, prettierimp_1.format)(60, 0, doc); const expected1 = `${y('[begin')} [stmt; ${b('stmt;')} stmt;] ${y('end]')}`; (0, chai_1.expect)(result1).to.equal(expected1); const result2 = (0, prettierimp_1.format)(30, 0, doc); const expected2 = `${y('[begin')} [stmt; ${b('stmt;')} stmt;] ${y('end]')}`; (0, chai_1.expect)(result2).to.equal(expected2); const result3 = (0, prettierimp_1.format)(10, 0, doc); const expected3 = `${y('[begin')} [stmt; ${b('stmt;')} stmt;] ${y('end]')}`; (0, chai_1.expect)(result3).to.equal(expected3); }); (0, mocha_1.it)('parentheses, braces, brackets', () => { const doc = [(0, prettierimp_1.parens)((0, prettierimp_1.braces)((0, prettierimp_1.brackets)([(0, prettierimp_1.line)(), (0, prettierimp_1.text)('abc'), (0, prettierimp_1.line)()])))]; const result60 = (0, prettierimp_1.format)(60, 0, doc); (0, chai_1.expect)(result60).to.equal('({[ abc ]})'); const result3 = (0, prettierimp_1.format)(3, 0, doc); (0, chai_1.expect)(result3).to.equal('({[\nabc\n]})'); }); }); //# sourceMappingURL=prettierimp.test.js.map