UNPKG

markov-typescript

Version:

A Markov Chain library written in Typescript.

39 lines (36 loc) 1.87 kB
import * as Collections from "typescript-collections"; import { ChainState } from "../src/chain-state"; import { MarkovChainItems } from "../src/markov-chain-items"; describe("MarkovChainItems<T>", () => { describe("getOrCreateValue", () => { it("Adds new instance if key does not exist", function () { const items = new MarkovChainItems<string>(); const state = new ChainState<string>(new Collections.Queue<string>()); const val = items.getOrCreateValue(state, () => null); expect(items.size()).toBe(1); }); it("Calls new instance function if key does not exist", function () { const items = new MarkovChainItems<string>(); const state = new ChainState<string>(new Collections.Queue<string>()); let counter = 0; const val = items.getOrCreateValue(state, () => { counter++; return null; }); expect(counter).toBe(1); }); it("Doesn't add new instance if key exists", function () { const items = new MarkovChainItems<string>(); const state = new ChainState<string>(new Collections.Queue<string>()); let counter = 0; items.setValue(state, null); const val = items.getOrCreateValue(state, () => { counter++; return null; }); expect(items.size()).toBe(1); }); it("Doesn't call new instance function if key does not exist", function () { const items = new MarkovChainItems<string>(); const state = new ChainState<string>(new Collections.Queue<string>()); let counter = 0; items.setValue(state, null); const val = items.getOrCreateValue(state, () => { counter++; return null; }); expect(counter).toBe(0); }); }); });