|
|
- 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();
- });
|