mirror of
https://github.com/morhetz/gruvbox.git
synced 2025-11-16 07:13:46 -05:00
208 lines
3.6 KiB
JavaScript
208 lines
3.6 KiB
JavaScript
import test from 'tape-catch';
|
||
|
||
import isSubset from './module';
|
||
|
||
test('Detects shallow subsets.', (is) => {
|
||
is.ok(isSubset(
|
||
{},
|
||
{}
|
||
), 'with empty objects'
|
||
);
|
||
|
||
is.ok(isSubset(
|
||
{a: 1},
|
||
{}
|
||
), 'with an empty subset'
|
||
);
|
||
|
||
is.ok(isSubset(
|
||
{a: 1, b: 2},
|
||
{a: 1, b: 2}
|
||
), 'with deep-equal objects'
|
||
);
|
||
|
||
is.ok(isSubset(
|
||
{a: 1, b: true, c: null, d: 'D', e: undefined, 'F-': 'anything'},
|
||
{a: 1, b: true, c: null, d: 'D', e: undefined, 'F-': 'anything'}
|
||
), 'with deep-equal objects of different kinds of values'
|
||
);
|
||
|
||
is.ok(isSubset(
|
||
{a: 1, b: 2},
|
||
{a: 1}
|
||
), 'with simple subsets'
|
||
);
|
||
|
||
is.end();
|
||
});
|
||
|
||
test('Detects shallow non-subsets.', (is) => {
|
||
is.notOk(isSubset(
|
||
{},
|
||
{a: 1}
|
||
), 'with an empty superset'
|
||
);
|
||
|
||
is.notOk(isSubset(
|
||
{a: 1},
|
||
{a: 2}
|
||
), 'with differences in values'
|
||
);
|
||
|
||
is.notOk(isSubset(
|
||
{a: 1},
|
||
{b: 1}
|
||
), 'with differences in keys'
|
||
);
|
||
|
||
is.notOk(isSubset(
|
||
{a: 1},
|
||
{a: 1, b: 2}
|
||
), 'with different sizes'
|
||
);
|
||
|
||
is.notOk(isSubset(
|
||
{a: 0},
|
||
{a: false}
|
||
), 'seeing the difference between falsey values'
|
||
);
|
||
|
||
is.notOk(isSubset(
|
||
{a: null},
|
||
{a: undefined}
|
||
), 'seeing the difference between null and undefined'
|
||
);
|
||
|
||
is.notOk(isSubset(
|
||
{a: 1},
|
||
{a: 1, b: undefined}
|
||
), 'seeing the difference between undefined reference and undefined value'
|
||
);
|
||
|
||
is.end();
|
||
});
|
||
|
||
test('Detects deep subsets.', (is) => {
|
||
is.ok(isSubset(
|
||
{a: {}},
|
||
{a: {}}
|
||
), 'with nested empty objects'
|
||
);
|
||
|
||
is.ok(isSubset(
|
||
{a: {}},
|
||
{}
|
||
), 'with an empty subset'
|
||
);
|
||
|
||
is.ok(isSubset(
|
||
{a: {b: 2}},
|
||
{a: {}}
|
||
), 'with a nested empty subset'
|
||
);
|
||
|
||
is.ok(isSubset(
|
||
{a: {b: 2}},
|
||
{a: {b: 2}}
|
||
), 'with deep-equal objects'
|
||
);
|
||
|
||
is.ok(isSubset(
|
||
{a: 1, b: true, c: null, d: 'D', e: undefined, 'F-': 'anything'},
|
||
{a: 1, b: true, c: null, d: 'D', e: undefined, 'F-': 'anything'}
|
||
), 'with deep-equal objects of different kinds of values'
|
||
);
|
||
|
||
is.ok(isSubset(
|
||
{a: 1, b: {c: 3, d: 4}, e: {f: {g: 7, h: {i: 9}}}},
|
||
{a: 1, b: {d: 4}, e: {f: {g: 7}}}
|
||
), 'with multiple levels of nesting'
|
||
);
|
||
|
||
is.end();
|
||
});
|
||
|
||
test('Detects deep non-subsets.', (is) => {
|
||
is.notOk(isSubset(
|
||
{a: {}},
|
||
{a: {b: 1}}
|
||
), 'with an empty object in the superset'
|
||
);
|
||
|
||
is.notOk(isSubset(
|
||
{a: {b: 2}},
|
||
{a: {b: 3}}
|
||
), 'with differences in values in a nested object'
|
||
);
|
||
|
||
is.notOk(isSubset(
|
||
{z: {a: 1}},
|
||
{z: {b: 1}}
|
||
), 'with differences in keys in a nested object'
|
||
);
|
||
|
||
is.notOk(isSubset(
|
||
{z: {a: 1}},
|
||
{z: {a: 1, b: 2}}
|
||
), 'with different sizes of a nested object'
|
||
);
|
||
|
||
is.end();
|
||
});
|
||
|
||
test('Works with array values.', (is) => {
|
||
is.ok(isSubset(
|
||
{a: []},
|
||
{a: []}
|
||
), 'treating empty arrays as equal'
|
||
);
|
||
|
||
is.ok(isSubset(
|
||
{a: [1]},
|
||
{a: [1]}
|
||
), 'treating equal arrays as equal'
|
||
);
|
||
|
||
is.notOk(isSubset(
|
||
{a: [1]},
|
||
{a: [1, 2]}
|
||
), 'detecting differences in length'
|
||
);
|
||
|
||
is.notOk(isSubset(
|
||
{a: [1]},
|
||
{a: [2]}
|
||
), 'detecting differences in values'
|
||
);
|
||
|
||
is.ok(isSubset(
|
||
{a: [1, 2, 3]},
|
||
{a: [1, 2]}
|
||
), 'treating array subsets as subsets'
|
||
);
|
||
|
||
is.notOk(isSubset(
|
||
{a: [1, 2, 3]},
|
||
{a: [1, 3]}
|
||
), '– only if the order is identical'
|
||
);
|
||
|
||
is.end();
|
||
});
|
||
|
||
test('Returns false for non-object “objects”.', (is) => {
|
||
is.notOk(isSubset(
|
||
'a',
|
||
{}
|
||
), 'for the superset'
|
||
);
|
||
|
||
is.notOk(isSubset(
|
||
{},
|
||
'a'
|
||
), 'for the subset'
|
||
);
|
||
|
||
is.end();
|
||
});
|