jsii-reflect
Version:
strongly-typed reflection library and tools for jsii
58 lines • 2.17 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const hierarchical_set_1 = require("../lib/hierarchical-set");
test('empty set', () => {
expect(Array.from(new hierarchical_set_1.HierarchicalSet())).toEqual([]);
});
test('set iteration', () => {
const hs = new hierarchical_set_1.HierarchicalSet([
['a'],
['a', 'b', 'c'],
['a', 'b', 'd'],
['a', 'e'],
['f'],
]);
expect(Array.from(hs)).toEqual([
['a'],
['a', 'b', 'c'],
['a', 'b', 'd'],
['a', 'e'],
['f'],
]);
});
test('add prefix after child', () => {
const hs = new hierarchical_set_1.HierarchicalSet();
hs.addAll([['a', 'b']]);
hs.addAll([['a']]);
expect(Array.from(hs)).toEqual([['a'], ['a', 'b']]);
});
describe('remove', () => {
test('remove literals', () => {
const x = new hierarchical_set_1.HierarchicalSet([['a', 'b'], ['c'], ['d']]);
x.remove([['a', 'b'], ['c']]);
expect(Array.from(x)).toEqual([['d']]);
});
test('remove parents', () => {
const x = new hierarchical_set_1.HierarchicalSet([['a', 'b'], ['c'], ['d']]);
x.remove([['a']]);
expect(Array.from(x)).toEqual([['c'], ['d']]);
});
});
describe('intersect', () => {
test('retains literal elements', () => {
const x = new hierarchical_set_1.HierarchicalSet([['a', 'b'], ['c'], ['d']]);
x.intersect(new hierarchical_set_1.HierarchicalSet([['a', 'b'], ['c']]));
expect(Array.from(x)).toEqual([['a', 'b'], ['c']]);
});
test('retains children of parents', () => {
const x = new hierarchical_set_1.HierarchicalSet([['a', 'b'], ['c'], ['d']]);
x.intersect(new hierarchical_set_1.HierarchicalSet([['a']]));
expect(Array.from(x)).toEqual([['a', 'b']]);
});
test('parent and child only retains child', () => {
const x = new hierarchical_set_1.HierarchicalSet([['a'], ['a', 'b']]);
x.intersect(new hierarchical_set_1.HierarchicalSet([['a', 'b'], ['c']]));
expect(Array.from(x)).toEqual([['a', 'b']]);
});
});
//# sourceMappingURL=hierarchical-set.test.js.map