diff --git a/test/built-ins/Temporal/Calendar/prototype/mergeFields/non-string-properties.js b/test/built-ins/Temporal/Calendar/prototype/mergeFields/non-string-properties.js index 2908be90ba..2a48dbf62c 100644 --- a/test/built-ins/Temporal/Calendar/prototype/mergeFields/non-string-properties.js +++ b/test/built-ins/Temporal/Calendar/prototype/mergeFields/non-string-properties.js @@ -13,22 +13,43 @@ info: | 5. Set additionalFields to ? ToObject(additionalFields). 6. Return ? DefaultMergeFields(fields, additionalFields). features: [Temporal] -includes: [deepEqual.js] ---*/ +function assertEntriesEqual(actual, expectedEntries, message) { + const names = Object.getOwnPropertyNames(actual); + const symbols = Object.getOwnPropertySymbols(actual); + const actualKeys = names.concat(symbols); + assert.sameValue( + actualKeys.length, + expectedEntries.length, + `${message}: expected object to have ${expectedEntries.length} properties, not ${actualKeys.length}:` + ); + for (var index = 0; index < actualKeys.length; index++) { + const actualKey = actualKeys[index]; + const expectedKey = expectedEntries[index][0]; + const expectedValue = expectedEntries[index][1]; + assert.sameValue(actualKey, expectedKey, `${message}: key ${index}:`); + assert.sameValue(actual[actualKey], expectedValue, `${message}: value ${index}:`); + } +} + const cal = new Temporal.Calendar("iso8601"); -assert.deepEqual( +assertEntriesEqual( cal.mergeFields({ 1: 2 }, { 3: 4 }), - { "1": 2, "3": 4 }, + [["1", 2], ["3", 4]], "number keys are actually string keys and are merged as such" ); -assert.deepEqual( +assertEntriesEqual( cal.mergeFields({ 1n: 2 }, { 2n: 4 }), - { "1": 2, "2": 4 }, + [["1", 2], ["2", 4]], "bigint keys are actually string keys and are merged as such" ); const foo = Symbol("foo"); const bar = Symbol("bar"); -assert.deepEqual(cal.mergeFields({ [foo]: 1 }, { [bar]: 2 }), {}, "symbol keys are not merged"); +assertEntriesEqual( + cal.mergeFields({ [foo]: 1 }, { [bar]: 2 }), + [], + "symbol keys are not merged" +);