UNPKG

boolean-expressions

Version:

Boolean expression parser and evaluator. Makes use of the Ohm grammar package with grammar rules found [here](https://github.com/avadavat/boolean-expressions/blob/master/src/grammar/grammarRules.ts).

408 lines (407 loc) 12.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var operators_1 = require("./operators"); function generateTestCases() { var testCases = [ { expression: "p and notq", variableNames: ["p", "notq"], truthTable: [ [false, false, false], [false, true, false], [true, false, false], [true, true, true] ] }, { expression: "not p and q", variableNames: ["p", "q"], truthTable: [ [false, false, false], [false, true, true], [true, false, false], [true, true, false] ] }, { expression: "p and not q", variableNames: ["p", "q"], truthTable: [ [false, false, false], [false, true, false], [true, false, true], [true, true, false] ] }, { expression: "p or not q", variableNames: ["p", "q"], truthTable: [ [false, false, true], [false, true, false], [true, false, true], [true, true, true] ] }, { expression: "not p or q", variableNames: ["p", "q"], truthTable: [ [false, false, true], [false, true, true], [true, false, false], [true, true, true] ] }, { expression: "not p xor q", variableNames: ["p", "q"], truthTable: [ [false, false, true], [false, true, false], [true, false, false], [true, true, true] ] }, { expression: "not p and not q", variableNames: ["p", "q"], truthTable: [ [false, false, true], [false, true, false], [true, false, false], [true, true, false] ] }, { expression: "p and q and s", variableNames: ["p", "q", "s"], truthTable: [ [false, false, false, false], [false, false, true, false], [false, true, false, false], [false, true, true, false], [true, false, false, false], [true, false, true, false], [true, true, false, false], [true, true, true, true] ] }, { expression: "p and q and not s", variableNames: ["p", "q", "s"], truthTable: [ [false, false, false, false], [false, false, true, false], [false, true, false, false], [false, true, true, false], [true, false, false, false], [true, false, true, false], [true, true, false, true], [true, true, true, false] ] }, { expression: "p and not q and s", variableNames: ["p", "q", "s"], truthTable: [ [false, false, false, false], [false, false, true, false], [false, true, false, false], [false, true, true, false], [true, false, false, false], [true, false, true, true], [true, true, false, false], [true, true, true, false] ] }, { expression: "p and not (q and s)", variableNames: ["p", "q", "s"], truthTable: [ [false, false, false, false], [false, false, true, false], [false, true, false, false], [false, true, true, false], [true, false, false, true], [true, false, true, true], [true, true, false, true], [true, true, true, false] ] }, { expression: "not p and q and s", variableNames: ["p", "q", "s"], truthTable: [ [false, false, false, false], [false, false, true, false], [false, true, false, false], [false, true, true, true], [true, false, false, false], [true, false, true, false], [true, true, false, false], [true, true, true, false] ] }, { expression: "p", variableNames: ["p"], truthTable: [ [false, false], [true, true] ] }, { expression: "p and q or s", variableNames: ["p", "q", "s"], truthTable: [ [false, false, false, false], [false, false, true, true], [false, true, false, false], [false, true, true, true], [true, false, false, false], [true, false, true, true], [true, true, false, true], [true, true, true, true] ] }, { expression: "(p and q) or s", variableNames: ["p", "q", "s"], truthTable: [ [false, false, false, false], [false, false, true, true], [false, true, false, false], [false, true, true, true], [true, false, false, false], [true, false, true, true], [true, true, false, true], [true, true, true, true] ] }, { expression: "if p then q", variableNames: ["p", "q"], truthTable: [ [false, false, true], [false, true, true], [true, false, false], [true, true, true] ] }, { expression: "p and q -> s", variableNames: ["p", "q", "s"], truthTable: [ [false, false, false, true], [false, false, true, true], [false, true, false, true], [false, true, true, true], [true, false, false, true], [true, false, true, true], [true, true, false, false], [true, true, true, true] ] }, { expression: "p -> q and s", variableNames: ["p", "q", "s"], truthTable: [ [false, false, false, true], [false, false, true, true], [false, true, false, true], [false, true, true, true], [true, false, false, false], [true, false, true, false], [true, true, false, false], [true, true, true, true] ] }, { expression: "p and q and true", variableNames: ["p", "q"], truthTable: [ [false, false, false], [false, true, false], [true, false, false], [true, true, true] ] }, { expression: "p and false and q", variableNames: ["p", "q"], truthTable: [ [false, false, false], [false, true, false], [true, false, false], [true, true, false] ] }, { expression: "true or p and q", variableNames: ["p", "q"], truthTable: [ [false, false, true], [false, true, true], [true, false, true], [true, true, true] ] } ]; // AND operators: operators_1.andOperators.forEach(function (op) { testCases.push({ expression: "p " + op + " q", variableNames: ["p", "q"], truthTable: [ [false, false, false], [false, true, false], [true, false, false], [true, true, true] ] }); }); // OR operators: operators_1.orOperators.forEach(function (op) { testCases.push({ expression: "p " + op + " q", variableNames: ["p", "q"], truthTable: [ [false, false, false], [false, true, true], [true, false, true], [true, true, true] ] }); }); // XOR operators: operators_1.xorOperators.forEach(function (op) { testCases.push({ expression: "p " + op + " q", variableNames: ["p", "q"], truthTable: [ [false, false, false], [false, true, true], [true, false, true], [true, true, false] ] }); }); // NOT operators: operators_1.notOperators.forEach(function (op) { testCases.push({ expression: op + " p", variableNames: ["p"], truthTable: [ [false, true], [true, false] ] }); }); // IF operators: operators_1.ifOperators.forEach(function (op) { testCases.push({ expression: "p " + op + " q", variableNames: ["p", "q"], truthTable: [ [false, false, true], [false, true, true], [true, false, false], [true, true, true] ] }); }); // BICONDITIONAL operators: operators_1.biconditionalOperators.forEach(function (op) { testCases.push({ expression: "p " + op + " q", variableNames: ["p", "q"], truthTable: [ [false, false, true], [false, true, false], [true, false, false], [true, true, true] ] }); }); // CONVERSE operators: operators_1.converseOperators.forEach(function (op) { testCases.push({ expression: "p " + op + " q", variableNames: ["p", "q"], truthTable: [ [false, false, true], [false, true, false], [true, false, true], [true, true, true] ] }); }); // NONIMPLICATION operators: operators_1.nonimplicationOperators.forEach(function (op) { testCases.push({ expression: "p " + op + " q", variableNames: ["p", "q"], truthTable: [ [false, false, false], [false, true, false], [true, false, true], [true, true, false] ] }); }); // CONVERSE NONIMPLICATION operators: operators_1.converseNonimplicationOperators.forEach(function (op) { testCases.push({ expression: "p " + op + " q", variableNames: ["p", "q"], truthTable: [ [false, false, false], [false, true, true], [true, false, false], [true, true, false] ] }); }); // NAND operators: operators_1.nandOperators.forEach(function (op) { testCases.push({ expression: "p " + op + " q", variableNames: ["p", "q"], truthTable: [ [false, false, true], [false, true, true], [true, false, true], [true, true, false] ] }); }); // NOR operators: operators_1.norOperators.forEach(function (op) { testCases.push({ expression: "p " + op + " q", variableNames: ["p", "q"], truthTable: [ [false, false, true], [false, true, false], [true, false, false], [true, true, false] ] }); }); // XNOR operators: operators_1.xnorOperators.forEach(function (op) { testCases.push({ expression: "p " + op + " q", variableNames: ["p", "q"], truthTable: [ [false, false, true], [false, true, false], [true, false, false], [true, true, true] ] }); }); return testCases; } exports.default = generateTestCases;