320 lines
7.4 KiB
JavaScript
320 lines
7.4 KiB
JavaScript
'use strict';
|
|
|
|
module.exports = [
|
|
{
|
|
description: 'scalars',
|
|
tests: [
|
|
{
|
|
description: 'equal numbers',
|
|
value1: 1,
|
|
value2: 1,
|
|
equal: true
|
|
},
|
|
{
|
|
description: 'not equal numbers',
|
|
value1: 1,
|
|
value2: 2,
|
|
equal: false
|
|
},
|
|
{
|
|
description: 'number and array are not equal',
|
|
value1: 1,
|
|
value2: [],
|
|
equal: false
|
|
},
|
|
{
|
|
description: '0 and null are not equal',
|
|
value1: 0,
|
|
value2: null,
|
|
equal: false
|
|
},
|
|
{
|
|
description: 'equal strings',
|
|
value1: 'a',
|
|
value2: 'a',
|
|
equal: true
|
|
},
|
|
{
|
|
description: 'not equal strings',
|
|
value1: 'a',
|
|
value2: 'b',
|
|
equal: false
|
|
},
|
|
{
|
|
description: 'empty string and null are not equal',
|
|
value1: '',
|
|
value2: null,
|
|
equal: false
|
|
},
|
|
{
|
|
description: 'null is equal to null',
|
|
value1: null,
|
|
value2: null,
|
|
equal: true
|
|
},
|
|
{
|
|
description: 'equal booleans (true)',
|
|
value1: true,
|
|
value2: true,
|
|
equal: true
|
|
},
|
|
{
|
|
description: 'equal booleans (false)',
|
|
value1: false,
|
|
value2: false,
|
|
equal: true
|
|
},
|
|
{
|
|
description: 'not equal booleans',
|
|
value1: true,
|
|
value2: false,
|
|
equal: false
|
|
},
|
|
{
|
|
description: '1 and true are not equal',
|
|
value1: 1,
|
|
value2: true,
|
|
equal: false
|
|
},
|
|
{
|
|
description: '0 and false are not equal',
|
|
value1: 0,
|
|
value2: false,
|
|
equal: false
|
|
}
|
|
]
|
|
},
|
|
|
|
{
|
|
description: 'objects',
|
|
tests: [
|
|
{
|
|
description: 'empty objects are equal',
|
|
value1: {},
|
|
value2: {},
|
|
equal: true
|
|
},
|
|
{
|
|
description: 'equal objects (same properties "order")',
|
|
value1: {a: 1, b: '2'},
|
|
value2: {a: 1, b: '2'},
|
|
equal: true
|
|
},
|
|
{
|
|
description: 'equal objects (different properties "order")',
|
|
value1: {a: 1, b: '2'},
|
|
value2: {b: '2', a: 1},
|
|
equal: true
|
|
},
|
|
{
|
|
description: 'not equal objects (extra property)',
|
|
value1: {a: 1, b: '2'},
|
|
value2: {a: 1, b: '2', c: []},
|
|
equal: false
|
|
},
|
|
{
|
|
description: 'not equal objects (different properties)',
|
|
value1: {a: 1, b: '2', c: 3},
|
|
value2: {a: 1, b: '2', d: 3},
|
|
equal: false
|
|
},
|
|
{
|
|
description: 'not equal objects (different properties)',
|
|
value1: {a: 1, b: '2', c: 3},
|
|
value2: {a: 1, b: '2', d: 3},
|
|
equal: false
|
|
},
|
|
{
|
|
description: 'equal objects (same sub-properties)',
|
|
value1: { a: [ { b: 'c' } ] },
|
|
value2: { a: [ { b: 'c' } ] },
|
|
equal: true
|
|
},
|
|
{
|
|
description: 'not equal objects (different sub-property value)',
|
|
value1: { a: [ { b: 'c' } ] },
|
|
value2: { a: [ { b: 'd' } ] },
|
|
equal: false
|
|
},
|
|
{
|
|
description: 'not equal objects (different sub-property)',
|
|
value1: { a: [ { b: 'c' } ] },
|
|
value2: { a: [ { c: 'c' } ] },
|
|
equal: false
|
|
},
|
|
{
|
|
description: 'empty array and empty object are not equal',
|
|
value1: {},
|
|
value2: [],
|
|
equal: false
|
|
},
|
|
{
|
|
description: 'object with extra undefined properties are not equal #1',
|
|
value1: {},
|
|
value2: {foo: undefined},
|
|
equal: false
|
|
},
|
|
{
|
|
description: 'object with extra undefined properties are not equal #2',
|
|
value1: {foo: undefined},
|
|
value2: {},
|
|
equal: false
|
|
},
|
|
{
|
|
description: 'object with extra undefined properties are not equal #3',
|
|
value1: {foo: undefined},
|
|
value2: {bar: undefined},
|
|
equal: false
|
|
}
|
|
]
|
|
},
|
|
|
|
{
|
|
description: 'arrays',
|
|
tests: [
|
|
{
|
|
description: 'two empty arrays are equal',
|
|
value1: [],
|
|
value2: [],
|
|
equal: true
|
|
},
|
|
{
|
|
description: 'equal arrays',
|
|
value1: [1, 2, 3],
|
|
value2: [1, 2, 3],
|
|
equal: true
|
|
},
|
|
{
|
|
description: 'not equal arrays (different item)',
|
|
value1: [1, 2, 3],
|
|
value2: [1, 2, 4],
|
|
equal: false
|
|
},
|
|
{
|
|
description: 'not equal arrays (different length)',
|
|
value1: [1, 2, 3],
|
|
value2: [1, 2],
|
|
equal: false
|
|
},
|
|
{
|
|
description: 'equal arrays of objects',
|
|
value1: [{a: 'a'}, {b: 'b'}],
|
|
value2: [{a: 'a'}, {b: 'b'}],
|
|
equal: true
|
|
},
|
|
{
|
|
description: 'not equal arrays of objects',
|
|
value1: [{a: 'a'}, {b: 'b'}],
|
|
value2: [{a: 'a'}, {b: 'c'}],
|
|
equal: false
|
|
},
|
|
{
|
|
description: 'pseudo array and equivalent array are not equal',
|
|
value1: {'0': 0, '1': 1, length: 2},
|
|
value2: [0, 1],
|
|
equal: false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
description: 'Date objects',
|
|
tests: [
|
|
{
|
|
description: 'equal date objects',
|
|
value1: new Date('2017-06-16T21:36:48.362Z'),
|
|
value2: new Date('2017-06-16T21:36:48.362Z'),
|
|
equal: true
|
|
},
|
|
{
|
|
description: 'not equal date objects',
|
|
value1: new Date('2017-06-16T21:36:48.362Z'),
|
|
value2: new Date('2017-01-01T00:00:00.000Z'),
|
|
equal: false
|
|
},
|
|
{
|
|
description: 'date and string are not equal',
|
|
value1: new Date('2017-06-16T21:36:48.362Z'),
|
|
value2: '2017-06-16T21:36:48.362Z',
|
|
equal: false
|
|
},
|
|
{
|
|
description: 'date and object are not equal',
|
|
value1: new Date('2017-06-16T21:36:48.362Z'),
|
|
value2: {},
|
|
equal: false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
description: 'RegExp objects',
|
|
tests: [
|
|
{
|
|
description: 'equal RegExp objects',
|
|
value1: /foo/,
|
|
value2: /foo/,
|
|
equal: true
|
|
},
|
|
{
|
|
description: 'not equal RegExp objects (different pattern)',
|
|
value1: /foo/,
|
|
value2: /bar/,
|
|
equal: false
|
|
},
|
|
{
|
|
description: 'not equal RegExp objects (different flags)',
|
|
value1: /foo/,
|
|
value2: /foo/i,
|
|
equal: false
|
|
},
|
|
{
|
|
description: 'RegExp and string are not equal',
|
|
value1: /foo/,
|
|
value2: 'foo',
|
|
equal: false
|
|
},
|
|
{
|
|
description: 'RegExp and object are not equal',
|
|
value1: /foo/,
|
|
value2: {},
|
|
equal: false
|
|
}
|
|
]
|
|
},
|
|
{
|
|
description: 'sample objects',
|
|
tests: [
|
|
{
|
|
description: 'big object',
|
|
value1: {
|
|
prop1: 'value1',
|
|
prop2: 'value2',
|
|
prop3: 'value3',
|
|
prop4: {
|
|
subProp1: 'sub value1',
|
|
subProp2: {
|
|
subSubProp1: 'sub sub value1',
|
|
subSubProp2: [1, 2, {prop2: 1, prop: 2}, 4, 5]
|
|
}
|
|
},
|
|
prop5: 1000,
|
|
prop6: new Date(2016, 2, 10)
|
|
},
|
|
value2: {
|
|
prop5: 1000,
|
|
prop3: 'value3',
|
|
prop1: 'value1',
|
|
prop2: 'value2',
|
|
prop6: new Date('2016/03/10'),
|
|
prop4: {
|
|
subProp2: {
|
|
subSubProp1: 'sub sub value1',
|
|
subSubProp2: [1, 2, {prop2: 1, prop: 2}, 4, 5]
|
|
},
|
|
subProp1: 'sub value1'
|
|
}
|
|
},
|
|
equal: true
|
|
}
|
|
]
|
|
}
|
|
];
|