diff --git a/harness/compareArray.js b/harness/compareArray.js index aaeaa48009..c150143cef 100644 --- a/harness/compareArray.js +++ b/harness/compareArray.js @@ -5,13 +5,20 @@ description: | Compare the contents of two arrays ---*/ +function isSameValue(a, b) { + if (a === 0 && b === 0) return 1 / a === 1 / b; + if (a !== a && b !== b) return true; + + return a === b; +} + function compareArray(a, b) { if (b.length !== a.length) { return false; } for (var i = 0; i < a.length; i++) { - if (b[i] !== a[i]) { + if (!isSameValue(b[i], a[i])) { return false; } } diff --git a/test/harness/compare-array-samevalue.js b/test/harness/compare-array-samevalue.js new file mode 100644 index 0000000000..826840e219 --- /dev/null +++ b/test/harness/compare-array-samevalue.js @@ -0,0 +1,11 @@ +// Copyright (C) 2019 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + compareArray uses SameValue for value comparison. +includes: [compareArray.js] +---*/ + +assert(compareArray([NaN], [NaN])); +assert(!compareArray([0], [-0]));