/* Test cases for nameCreators.js. */ import { layoutDimensionName, obsAnnoDimensionName, diffexpDimensionName, userDefinedDimensionName, makeContinuousDimensionName, } from "../../src/util/nameCreators"; describe("nameCreators", () => { const nameCreators = [ layoutDimensionName, obsAnnoDimensionName, diffexpDimensionName, userDefinedDimensionName, ]; test("check for namespace isolation", () => { const foo = "foo"; nameCreators.forEach((fn) => expect(fn(foo)).not.toBe(foo)); const bar = "bar"; nameCreators.forEach((fn) => expect(fn(foo)).not.toBe(fn(bar))); nameCreators.forEach((fn) => { const allOtherFn = nameCreators.filter((elmnt) => elmnt !== fn); allOtherFn.forEach((otherFn) => expect(fn(foo)).not.toBe(otherFn(foo))); }); }); test("check for legal keys", () => { /* need namespace creators to return strings only */ nameCreators.forEach((fn) => expect(fn("X")).toMatch(/X/)); }); }); describe("makeContinuousDimensionName", () => { test("namespaces", () => { expect(makeContinuousDimensionName({ isObs: true }, "OK")).toMatch(/OK/); expect(makeContinuousDimensionName({ isDiffExp: true }, "OK")).toMatch( /OK/ ); expect(makeContinuousDimensionName({ isUserDefined: true }, "OK")).toMatch( /OK/ ); }); test("error handling", () => { expect(() => makeContinuousDimensionName({}, "oops")).toThrow(); expect(() => makeContinuousDimensionName( { isObs: false, isDiffExp: false, isUserDefined: false }, "oops" ) ).toThrow(); expect(() => makeContinuousDimensionName({ isObs: true }, "OK") ).not.toThrow(); expect(() => makeContinuousDimensionName({ isDiffExp: true }, "OK") ).not.toThrow(); expect(() => makeContinuousDimensionName({ isUserDefined: true }, "OK") ).not.toThrow(); }); });