dawg-set
Version:
Javascript directed acyclic word graph (DAWG)
50 lines (40 loc) • 1.69 kB
JavaScript
;
const Dawg = require('../dawg').default;
const assert = require('chai').assert;
describe('valuesStartingWith', () => {
it('Empty DAWG should have no valuesStartingWith', () => {
assert.deepEqual([], Array.from(Dawg.from([]).valuesStartingWith('')));
assert.deepEqual([], Array.from(Dawg.from([]).valuesStartingWith('fads')));
});
it('Single DAWG should have one value', () => {
const d = Dawg.from(['a']);
assert.deepEqual(['a'], Array.from(d.valuesStartingWith('a')));
assert.deepEqual([], Array.from(d.valuesStartingWith('abc')));
assert.deepEqual([], Array.from(d.valuesStartingWith('x')));
});
it('should return all starting values', () => {
const d = Dawg.from(['a', 'abc', 'abcd', 'd', 'da']);
assert.deepEqual(
['abc', 'abcd'],
Array.from(d.valuesStartingWith('ab')));
assert.deepEqual(
[],
Array.from(d.valuesStartingWith('abcde')));
assert.deepEqual(
['da'],
Array.from(d.valuesStartingWith('da')));
});
it('should join components using custom string ', () => {
const d = Dawg.from(['a', 'abc', 'abcd', 'd', 'da']);
assert.deepEqual(
['axbxc', 'axbxcxd'],
Array.from(d.valuesStartingWith('ab', 'x')));
});
it('should join components using custom function ', () => {
const d = Dawg.from(['a', 'abc', 'abcd', 'd', 'da']);
const joiner = (acc, x) => (acc ? acc + x : x) + x;
assert.deepEqual(
['aabbcc', 'aabbccdd'],
Array.from(d.valuesStartingWith('ab', joiner)));
});
});