diff options
Diffstat (limited to 'js/src/tests/non262/regress/regress-329383.js')
-rw-r--r-- | js/src/tests/non262/regress/regress-329383.js | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/js/src/tests/non262/regress/regress-329383.js b/js/src/tests/non262/regress/regress-329383.js new file mode 100644 index 0000000000..00c7260cae --- /dev/null +++ b/js/src/tests/non262/regress/regress-329383.js @@ -0,0 +1,83 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +//----------------------------------------------------------------------------- +var BUGNUMBER = 329383; +var summary = 'Math copysign issues'; +var actual = ''; +var expect = ''; + +printBugNumber(BUGNUMBER); +printStatus (summary); + +var inputs = [ + -Infinity, + -10.01, + -9.01, + -8.01, + -7.01, + -6.01, + -5.01, + -4.01, + -Math.PI, + -3.01, + -2.01, + -1.01, + -0.5, + -0.49, + -0.01, + -0, + 0, + +0, + 0.01, + 0.49, + 0.50, + 0, + 1.01, + 2.01, + 3.01, + Math.PI, + 4.01, + 5.01, + 6.01, + 7.01, + 8.01, + 9.01, + 10.01, + Infinity + ]; + +var iinput; + +for (iinput = 0; iinput < inputs.length; iinput++) +{ + var input = inputs[iinput]; + reportCompare(Math.round(input), + emulateRound(input), + summary + ': Math.round(' + input + ')'); +} + +reportCompare(isNaN(Math.round(NaN)), + isNaN(emulateRound(NaN)), + summary + ': Math.round(' + input + ')'); + +function emulateRound(x) +{ + if (!isFinite(x) || x === 0) return x + if (-0.5 <= x && x < 0) return -0 + return Math.floor(x + 0.5) + } + +var z; + +z = Math.min(-0, 0); + +reportCompare(-Math.PI, Math.atan2(z, z), summary + ': Math.atan2(-0, -0)'); +reportCompare(-Infinity, 1/z, summary + ': 1/-0'); + +z = Math.max(-0, 0); + +reportCompare(0, Math.atan2(z, z), summary + ': Math.atan2(0, 0)'); +reportCompare(Infinity, 1/z, summary + ': 1/0'); |