fuzzy-rater
Version:
Tooling for fuzzily rating text according to some query
218 lines • 15.9 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const convertNFATemplateToDFATemplate_1 = require("../convertNFATemplateToDFATemplate");
/**
* Adds the given data to each object in an array
* @param items The items to add data to
* @param add The data to add
* @returns The items with the data added
*/
function add(items, add) {
return items.map(item => ({ ...item, ...add }));
}
describe("convertNFATemplateToDFATemplate", () => {
it("Should obtain the proper initial state", () => {
const nfa = [
{
ID: "1",
initial: true,
transitions: [
{ to: "3", type: "empty", metadata: undefined },
{ to: "4", type: "character", character: "4", metadata: undefined },
],
metadata: undefined,
},
{
ID: "2",
initial: true,
transitions: [
{ to: "3", type: "character", character: "4", metadata: undefined },
],
metadata: undefined,
},
{
ID: "3",
initial: false,
transitions: [{ to: "5", type: "empty", metadata: undefined }],
metadata: undefined,
},
{
ID: "4",
initial: false,
transitions: [
{ to: "1", type: "empty", metadata: undefined },
{ to: "4", type: "character", character: "4", metadata: undefined },
],
metadata: undefined,
},
{
ID: "5",
initial: false,
transitions: [],
metadata: undefined,
},
];
const dfa = convertNFATemplateToDFATemplate_1.convertNFATemplateToDFATemplate(nfa);
expect(dfa.initial).toBe("{1,2,3,5}");
});
it("Should properly create combined character transitions", () => {
const a = {
ID: "a",
initial: true,
transitions: [
{ to: "b", type: "character", character: "a", metadata: undefined },
{ to: "c", type: "character", character: "a", metadata: undefined },
],
metadata: undefined,
};
const b = {
ID: "b",
initial: false,
transitions: [
{ to: "d", type: "character", character: "b", metadata: undefined },
{ to: "e", type: "character", character: "c", metadata: undefined },
],
metadata: undefined,
};
const c = {
ID: "c",
initial: false,
transitions: [
{ to: "f", type: "character", character: "b", metadata: undefined },
{ to: "g", type: "character", character: "d", metadata: undefined },
{ to: "h", type: "remaining", metadata: undefined },
],
metadata: undefined,
};
const d = {
ID: "d",
initial: false,
transitions: [],
metadata: undefined,
};
const e = {
ID: "e",
initial: false,
transitions: [],
metadata: undefined,
};
const f = {
ID: "f",
initial: false,
transitions: [],
metadata: undefined,
};
const g = {
ID: "g",
initial: false,
transitions: [],
metadata: undefined,
};
const h = {
ID: "h",
initial: false,
transitions: [],
metadata: undefined,
};
const nfa = [
a,
b,
c,
d,
e,
f,
g,
h,
];
const dfa = convertNFATemplateToDFATemplate_1.convertNFATemplateToDFATemplate(nfa);
const dfaTest = {
initial: "{a}",
nodes: [
{
ID: "{a}",
transitions: [
{
to: "{b,c}",
type: "character",
character: "a",
metadata: { sources: add(a.transitions, { from: "a" }) },
},
{
to: "{}",
type: "remaining",
metadata: { sources: [] },
},
],
metadata: { sources: [a] },
},
{
ID: "{b,c}",
transitions: [
{
to: "{d,f}",
type: "character",
character: "b",
metadata: {
sources: [
{ ...b.transitions[0], from: "b" },
{ ...c.transitions[0], from: "c" },
],
},
},
{
to: "{e,h}",
type: "character",
character: "c",
metadata: {
sources: [
{ ...b.transitions[1], from: "b" },
{ ...c.transitions[2], from: "c" },
],
},
},
{
to: "{g}",
type: "character",
character: "d",
metadata: { sources: [{ ...c.transitions[1], from: "c" }] },
},
{
to: "{h}",
type: "remaining",
metadata: { sources: [{ ...c.transitions[2], from: "c" }] },
},
],
metadata: { sources: [b, c] },
},
{
ID: "{d,f}",
transitions: [{ to: "{}", type: "remaining", metadata: { sources: [] } }],
metadata: { sources: [d, f] },
},
{
ID: "{e,h}",
transitions: [{ to: "{}", type: "remaining", metadata: { sources: [] } }],
metadata: { sources: [e, h] },
},
{
ID: "{g}",
transitions: [{ to: "{}", type: "remaining", metadata: { sources: [] } }],
metadata: { sources: [g] },
},
{
ID: "{h}",
transitions: [{ to: "{}", type: "remaining", metadata: { sources: [] } }],
metadata: { sources: [h] },
},
{
ID: "{}",
transitions: [{ to: "{}", type: "remaining", metadata: { sources: [] } }],
metadata: { sources: [] },
},
],
};
expect(dfa.initial).toEqual(dfaTest.initial);
expect(new Set(dfa.nodes)).toEqual(new Set(dfaTest.nodes));
});
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydE5GQVRlbXBsYXRlVG9ERkFUZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ERkEvTkZBREZBL190ZXN0cy9jb252ZXJ0TkZBVGVtcGxhdGVUb0RGQVRlbXBsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsd0ZBQW1GO0FBR25GOzs7OztHQUtHO0FBQ0gsU0FBUyxHQUFHLENBQXFDLEtBQVUsRUFBRSxHQUFNO0lBQy9ELE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUcsRUFBQyxDQUFDLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsUUFBUSxDQUFDLGlDQUFpQyxFQUFFLEdBQUcsRUFBRTtJQUM3QyxFQUFFLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFO1FBQzlDLE1BQU0sR0FBRyxHQUFpRDtZQUN0RDtnQkFDSSxFQUFFLEVBQUUsR0FBRztnQkFDUCxPQUFPLEVBQUUsSUFBSTtnQkFDYixXQUFXLEVBQUU7b0JBQ1QsRUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBQztvQkFDN0MsRUFBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFDO2lCQUNwRTtnQkFDRCxRQUFRLEVBQUUsU0FBUzthQUN0QjtZQUNEO2dCQUNJLEVBQUUsRUFBRSxHQUFHO2dCQUNQLE9BQU8sRUFBRSxJQUFJO2dCQUNiLFdBQVcsRUFBRTtvQkFDVCxFQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUM7aUJBQ3BFO2dCQUNELFFBQVEsRUFBRSxTQUFT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