UNPKG

@informalsystems/quint

Version:

Core tool for the Quint specification language

34 lines 2.04 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const mocha_1 = require("mocha"); const chai_1 = require("chai"); const MultipleUpdatesChecker_1 = require("../../src/effects/MultipleUpdatesChecker"); const parser_1 = require("../../src/effects/parser"); const src_1 = require("../../src"); const checker = new MultipleUpdatesChecker_1.MultipleUpdatesChecker(); (0, mocha_1.describe)('checkEffects', () => { (0, mocha_1.it)('returns empty map for effects with no problems', () => { const effects = [ (0, parser_1.parseEffectOrThrow)("(Read[v1]) => Read[v1] & Update['x']"), (0, parser_1.parseEffectOrThrow)("(Update['x', 'y']) => Update['x', 'y']"), ].map(src_1.toScheme); const errors = checker.checkEffects(effects); chai_1.assert.isEmpty(errors, `Should find no errors, found: ${[...errors.values()].map(src_1.quintErrorToString)}`); }); (0, mocha_1.it)('returns a map with errors for all problems', () => { const effects = [ (0, parser_1.parseEffectOrThrow)("(Read[v1]) => Read[v1] & Update['x']"), (0, parser_1.parseEffectOrThrow)("(Update['x', 'y']) => Update['x', 'y', 'y']"), (0, parser_1.parseEffectOrThrow)("Update['z', 'z', 'z']"), ].map(src_1.toScheme); const errors = checker.checkEffects(effects); chai_1.assert.sameDeepMembers([...errors.entries()], [ [1n, { code: 'QNT202', message: 'Multiple updates of variable z', reference: 1n, data: {} }], [2n, { code: 'QNT202', message: 'Multiple updates of variable z', reference: 2n, data: {} }], [3n, { code: 'QNT202', message: 'Multiple updates of variable z', reference: 3n, data: {} }], [4n, { code: 'QNT202', message: 'Multiple updates of variable y', reference: 4n, data: {} }], [5n, { code: 'QNT202', message: 'Multiple updates of variable y', reference: 5n, data: {} }], ]); }); }); //# sourceMappingURL=MultipleUpdatesChecker.test.js.map