Home Reference Source Test

test/generic/utils/SetUtils.spec.js

describe('SetUtils', () => {

    it('correctly computes the union of two sets', () => {
        const setA = new Set([1, 2, 3, 4, 5]);
        const setB = new Set([3, 4, 5, 6, 7, 8]);
        const union = setA.union(setB);
        expect(union).toEqual(new Set([1, 2, 3, 4, 5, 6, 7, 8]));
    });

    it('correctly computes the intersection of two sets', () => {
        const setA = new Set([1, 2, 3, 4, 5]);
        const setB = new Set([3, 4, 5, 6, 7, 8]);
        const union = setA.intersection(setB);
        expect(union).toEqual(new Set([3, 4, 5]));
    });

    it('correctly computes the difference of two sets', () => {
        const setA = new Set([1, 2, 3, 4, 5]);
        const setB = new Set([3, 4, 5, 6, 7, 8]);
        const union = setA.difference(setB);
        expect(union).toEqual(new Set([1, 2]));
    });

    it('correctly calculates set equality', () => {
        const setA = new Set([1, 2, 3]);
        const setB = new Set([1, 2, 3]);
        const setC = new Set([1, 2, 3, 4]);
        expect(setA.equals(setB)).toBe(true);
        expect(setB.equals(setA)).toBe(true);
        expect(setA.equals(setC)).toBe(false);
        expect(setC.equals(setA)).toBe(false);
    });

    it('constructs a set from various types', () => {
        expect(Set.from(152)).toEqual(new Set([152]));
        expect(Set.from([1, 2, 3])).toEqual(new Set([1, 2, 3]));
        expect(Set.from({ '1': 5 })).toEqual(new Set([{ '1': 5 }]));
        expect(Set.from(new Set([5, 3]))).toEqual(new Set([5, 3]));
        const map = new Map();
        map.set(354, 124);
        expect(Set.from(map)).toEqual(new Set([[354, 124]]));
        expect(Set.from('test')).toEqual(new Set(['test']));
    });
});