diff options
Diffstat (limited to 'test/core.test.js')
-rw-r--r-- | test/core.test.js | 130 |
1 files changed, 81 insertions, 49 deletions
diff --git a/test/core.test.js b/test/core.test.js index 685bf9dc..127df783 100644 --- a/test/core.test.js +++ b/test/core.test.js @@ -21,11 +21,11 @@ import {DynamicProperty, deepEqual} from '../ext/js/core.js'; /** */ function testDynamicProperty() { - test('DynamicProperty', () => { + describe('DynamicProperty', () => { + /** @type {import('test/core').DynamicPropertyTestData} */ const data = [ { initialValue: 0, - /** @type {{operation: ?string, expectedDefaultValue: number, expectedValue: number, expectedOverrideCount: number, expeectedEventOccurred: boolean, args: [value: number, priority?: number]}[]} */ operations: [ { operation: null, @@ -33,7 +33,7 @@ function testDynamicProperty() { expectedDefaultValue: 0, expectedValue: 0, expectedOverrideCount: 0, - expeectedEventOccurred: false + expectedEventOccurred: false }, { operation: 'set.defaultValue', @@ -41,7 +41,7 @@ function testDynamicProperty() { expectedDefaultValue: 1, expectedValue: 1, expectedOverrideCount: 0, - expeectedEventOccurred: true + expectedEventOccurred: true }, { operation: 'set.defaultValue', @@ -49,7 +49,7 @@ function testDynamicProperty() { expectedDefaultValue: 1, expectedValue: 1, expectedOverrideCount: 0, - expeectedEventOccurred: false + expectedEventOccurred: false }, { operation: 'set.defaultValue', @@ -57,7 +57,7 @@ function testDynamicProperty() { expectedDefaultValue: 0, expectedValue: 0, expectedOverrideCount: 0, - expeectedEventOccurred: true + expectedEventOccurred: true }, { operation: 'setOverride', @@ -65,7 +65,7 @@ function testDynamicProperty() { expectedDefaultValue: 0, expectedValue: 8, expectedOverrideCount: 1, - expeectedEventOccurred: true + expectedEventOccurred: true }, { operation: 'setOverride', @@ -73,7 +73,7 @@ function testDynamicProperty() { expectedDefaultValue: 0, expectedValue: 8, expectedOverrideCount: 2, - expeectedEventOccurred: false + expectedEventOccurred: false }, { operation: 'setOverride', @@ -81,7 +81,7 @@ function testDynamicProperty() { expectedDefaultValue: 0, expectedValue: 32, expectedOverrideCount: 3, - expeectedEventOccurred: true + expectedEventOccurred: true }, { operation: 'setOverride', @@ -89,7 +89,7 @@ function testDynamicProperty() { expectedDefaultValue: 0, expectedValue: 32, expectedOverrideCount: 4, - expeectedEventOccurred: false + expectedEventOccurred: false }, { operation: 'clearOverride', @@ -97,7 +97,7 @@ function testDynamicProperty() { expectedDefaultValue: 0, expectedValue: 32, expectedOverrideCount: 3, - expeectedEventOccurred: false + expectedEventOccurred: false }, { operation: 'clearOverride', @@ -105,7 +105,7 @@ function testDynamicProperty() { expectedDefaultValue: 0, expectedValue: 32, expectedOverrideCount: 2, - expeectedEventOccurred: false + expectedEventOccurred: false }, { operation: 'clearOverride', @@ -113,7 +113,7 @@ function testDynamicProperty() { expectedDefaultValue: 0, expectedValue: 64, expectedOverrideCount: 1, - expeectedEventOccurred: true + expectedEventOccurred: true }, { operation: 'clearOverride', @@ -121,40 +121,42 @@ function testDynamicProperty() { expectedDefaultValue: 0, expectedValue: 0, expectedOverrideCount: 0, - expeectedEventOccurred: true + expectedEventOccurred: true } ] } ]; - for (const {initialValue, operations} of data) { - const property = new DynamicProperty(initialValue); - const overrideTokens = []; - let eventOccurred = false; - const onChange = () => { eventOccurred = true; }; - property.on('change', onChange); - for (const {operation, args, expectedDefaultValue, expectedValue, expectedOverrideCount, expeectedEventOccurred} of operations) { - eventOccurred = false; - switch (operation) { - case 'set.defaultValue': property.defaultValue = args[0]; break; - case 'setOverride': overrideTokens.push(property.setOverride(...args)); break; - case 'clearOverride': property.clearOverride(overrideTokens[overrideTokens.length + args[0]]); break; + describe.each(data)('Test DynamicProperty($initialValue)', ({initialValue, operations}) => { + test('works as expected', () => { + const property = new DynamicProperty(initialValue); + const overrideTokens = []; + let eventOccurred = false; + const onChange = () => { eventOccurred = true; }; + property.on('change', onChange); + for (const {operation, args, expectedDefaultValue, expectedValue, expectedOverrideCount, expectedEventOccurred} of operations) { + eventOccurred = false; + switch (operation) { + case 'set.defaultValue': property.defaultValue = args[0]; break; + case 'setOverride': overrideTokens.push(property.setOverride(...args)); break; + case 'clearOverride': property.clearOverride(overrideTokens[overrideTokens.length + args[0]]); break; + } + expect(eventOccurred).toStrictEqual(expectedEventOccurred); + expect(property.defaultValue).toStrictEqual(expectedDefaultValue); + expect(property.value).toStrictEqual(expectedValue); + expect(property.overrideCount).toStrictEqual(expectedOverrideCount); } - expect(eventOccurred).toStrictEqual(expeectedEventOccurred); - expect(property.defaultValue).toStrictEqual(expectedDefaultValue); - expect(property.value).toStrictEqual(expectedValue); - expect(property.overrideCount).toStrictEqual(expectedOverrideCount); - } - property.off('change', onChange); - } + property.off('change', onChange); + }); + }); }); } /** */ function testDeepEqual() { describe('deepEqual', () => { - const data = [ - // Simple tests + /** @type {import('test/core').DeepEqualTestData} */ + const simpleTestsData = [ { value1: 0, value2: 0, @@ -194,9 +196,10 @@ function testDeepEqual() { value1: true, value2: false, expected: false - }, - - // Simple object tests + } + ]; + /** @type {import('test/core').DeepEqualTestData} */ + const simpleObjectTestsData = [ { value1: {}, value2: {}, @@ -216,9 +219,10 @@ function testDeepEqual() { value1: {}, value2: null, expected: false - }, - - // Complex object tests + } + ]; + /** @type {import('test/core').DeepEqualTestData} */ + const complexObjectTestsData = [ { value1: [1], value2: [], @@ -259,27 +263,55 @@ function testDeepEqual() { value1: {test: {test2: [true]}}, value2: {test: {test2: [true]}}, expected: true - }, - - // Recursive + } + ]; + /** @type {import('test/core').DeepEqualTestData} */ + const recursiveTestsData = [ { value1: (() => { const x = {}; x.x = x; return x; })(), value2: (() => { const x = {}; x.x = x; return x; })(), expected: false } ]; + describe('simple tests', () => { + test.each(simpleTestsData)('deepEqual($value1, $value2) -> $expected', ({value1, value2, expected}) => { + const actual1 = deepEqual(value1, value2); + expect(actual1).toStrictEqual(expected); + + const actual2 = deepEqual(value2, value1); + expect(actual2).toStrictEqual(expected); + }); + }); + + describe('simple object tests', () => { + test.each(simpleObjectTestsData)('deepEqual($value1, $value2) -> $expected', ({value1, value2, expected}) => { + const actual1 = deepEqual(value1, value2); + expect(actual1).toStrictEqual(expected); + + const actual2 = deepEqual(value2, value1); + expect(actual2).toStrictEqual(expected); + }); + }); + + describe('complex object tests', () => { + test.each(complexObjectTestsData)('deepEqual($value1, $value2) -> $expected', ({value1, value2, expected}) => { + const actual1 = deepEqual(value1, value2); + expect(actual1).toStrictEqual(expected); + + const actual2 = deepEqual(value2, value1); + expect(actual2).toStrictEqual(expected); + }); + }); - let index = 0; - for (const {value1, value2, expected} of data) { - test(`${index}`, () => { + describe('recursive tests', () => { + test.each(recursiveTestsData)('deepEqual($value1, $value2) -> $expected', ({value1, value2, expected}) => { const actual1 = deepEqual(value1, value2); expect(actual1).toStrictEqual(expected); const actual2 = deepEqual(value2, value1); expect(actual2).toStrictEqual(expected); }); - ++index; - } + }); }); } |