// (C) 2007-2019 GoodData Corporation import { range } from "lodash"; import { getRandomDataGenerator, getRandomDataValue, createRandomGeneratorsPool } from "../randomGenerator"; describe("getRandomValue", () => { it("should generate deterministic values when seed used", () => { const randomGeneratorPool = createRandomGeneratorsPool(); const values = range(5).map(() => getRandomDataValue(randomGeneratorPool, "base-seed", "secondary-seed-test1"), ); expect(values).toEqual(["574", "329", "571", "641", "848"]); const values2 = range(5).map(() => getRandomDataValue(randomGeneratorPool, "base-seed", "secondary-seed-test1"), ); expect(values2).toEqual(["251", "934", "416", "294", "122"]); }); it("should generate different values for different seeds", () => { const randomGeneratorPool = createRandomGeneratorsPool(); const valuesA = range(5).map(() => getRandomDataValue(randomGeneratorPool, "base-seed", "secondary-seed-A-test2"), ); const valuesB = range(5).map(() => getRandomDataValue(randomGeneratorPool, "base-seed", "secondary-seed-B-test2"), ); expect(valuesA).not.toEqual(valuesB); }); it("should generate different values for every generator when seed not used", () => { const randomGeneratorPool = createRandomGeneratorsPool(); const valuesA = range(5).map(() => getRandomDataValue(randomGeneratorPool)); const valuesB = range(5).map(() => getRandomDataValue(randomGeneratorPool)); expect(valuesA).not.toEqual(valuesB); }); }); describe("getRandomDataGenerator", () => { it("should get generator function", () => { const randomGeneratorPool = createRandomGeneratorsPool(); const generator = getRandomDataGenerator(randomGeneratorPool); expect(typeof generator).toBe("function"); }); it("should use same generator when same seed used", () => { const randomGeneratorPool = createRandomGeneratorsPool(); const generatorA = getRandomDataGenerator(randomGeneratorPool, "base-seed", "secondary-seed-test3"); const generatorB = getRandomDataGenerator(randomGeneratorPool, "base-seed", "secondary-seed-test3"); expect(generatorA).toBe(generatorB); }); it("should use different generator when different seed used", () => { const randomGeneratorPool = createRandomGeneratorsPool(); const generatorA = getRandomDataGenerator(randomGeneratorPool, "base-seed", "secondary-seed-A-test4"); const generatorB = getRandomDataGenerator(randomGeneratorPool, "base-seed", "secondary-seed-B-test4"); expect(generatorA).not.toBe(generatorB); }); });