2008-10-08 Maciej Stachowiak <mjs@apple.com>
authormjs@apple.com <mjs@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 8 Oct 2008 10:27:08 +0000 (10:27 +0000)
committermjs@apple.com <mjs@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 8 Oct 2008 10:27:08 +0000 (10:27 +0000)
        Reviewed by Oliver Hunt.

        - update regression testing system to be able to tell 0 from -0

        * fast/js/resources/js-test-pre.js:

        Update tests and results appropriately.

        * fast/js/resources/constant-folding.js:
        * fast/js/constant-folding-expected.txt:
        * fast/js/math-transforms-expected.txt:
        * fast/js/resources/math-transforms.js:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@37416 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/fast/js/constant-folding-expected.txt
LayoutTests/fast/js/math-transforms-expected.txt
LayoutTests/fast/js/resources/constant-folding.js
LayoutTests/fast/js/resources/js-test-pre.js
LayoutTests/fast/js/resources/math-transforms.js

index f5c7b7b0abcffb1c57d4085dc030c36560358733..c00a885a021949c0bf2fd8839fbb74eb3233ecce 100644 (file)
@@ -1,3 +1,18 @@
+2008-10-08  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Oliver Hunt.
+        
+        - update regression testing system to be able to tell 0 from -0
+        
+        * fast/js/resources/js-test-pre.js:
+
+        Update tests and results appropriately.
+
+        * fast/js/resources/constant-folding.js:
+        * fast/js/constant-folding-expected.txt:
+        * fast/js/math-transforms-expected.txt:
+        * fast/js/resources/math-transforms.js:
+
 2008-10-08  Maciej Stachowiak  <mjs@apple.com>
 
         Reviewed by Oliver Hunt.
index f398c54a6586da24f027a76b7c369a8ef59cc68f..107ca48a049ca22fb17d9eee7242b9647f7a70b5 100644 (file)
@@ -410,7 +410,7 @@ PASS -3.1 is -3.1
 PASS - -3.1 is 3.1
 PASS -"3.1" is -3.1
 PASS -true is -1
-PASS -false is 0
+PASS -false is -0
 PASS ~3 is -4
 PASS ~ ~3 is 3
 PASS ~"3" is -4
index 449b1740fd0ec9266fccaaf229dce0e112ed4e33..d589a6ad1e1dcec140ff35edafbac156f5230fd4 100644 (file)
@@ -24,9 +24,9 @@ PASS values.zero * 1 is 0
 PASS 1 * values.zero is +values.zero
 PASS 1 * values.zero is 0
 PASS values.minusZero * 1 is +values.minusZero
-PASS values.minusZero * 1 is 0
+PASS values.minusZero * 1 is -0
 PASS 1 * values.minusZero is +values.minusZero
-PASS 1 * values.minusZero is 0
+PASS 1 * values.minusZero is -0
 PASS values.infinity * 1 is +values.infinity
 PASS values.infinity * 1 is Infinity
 PASS 1 * values.infinity is +values.infinity
@@ -138,11 +138,11 @@ PASS values.someInt - +values.zero is 42
 PASS +values.someInt - +values.zero is values.someInt - values.zero
 PASS +values.someInt - +values.zero is 42
 PASS +values.someInt * values.minusZero is values.someInt * values.minusZero
-PASS +values.someInt * values.minusZero is 0
+PASS +values.someInt * values.minusZero is -0
 PASS values.someInt * +values.minusZero is values.someInt * values.minusZero
-PASS values.someInt * +values.minusZero is 0
+PASS values.someInt * +values.minusZero is -0
 PASS +values.someInt * +values.minusZero is values.someInt * values.minusZero
-PASS +values.someInt * +values.minusZero is 0
+PASS +values.someInt * +values.minusZero is -0
 PASS +values.someInt / values.minusZero is values.someInt / values.minusZero
 PASS +values.someInt / values.minusZero is -Infinity
 PASS values.someInt / +values.minusZero is values.someInt / values.minusZero
@@ -180,11 +180,11 @@ PASS values.someInt * +values.minusInfinity is -Infinity
 PASS +values.someInt * +values.minusInfinity is values.someInt * values.minusInfinity
 PASS +values.someInt * +values.minusInfinity is -Infinity
 PASS +values.someInt / values.minusInfinity is values.someInt / values.minusInfinity
-PASS +values.someInt / values.minusInfinity is 0
+PASS +values.someInt / values.minusInfinity is -0
 PASS values.someInt / +values.minusInfinity is values.someInt / values.minusInfinity
-PASS values.someInt / +values.minusInfinity is 0
+PASS values.someInt / +values.minusInfinity is -0
 PASS +values.someInt / +values.minusInfinity is values.someInt / values.minusInfinity
-PASS +values.someInt / +values.minusInfinity is 0
+PASS +values.someInt / +values.minusInfinity is -0
 PASS +values.someInt - values.minusInfinity is values.someInt - values.minusInfinity
 PASS +values.someInt - values.minusInfinity is Infinity
 PASS values.someInt - +values.minusInfinity is values.someInt - values.minusInfinity
@@ -336,11 +336,11 @@ PASS values.someFloat - +values.zero is 42.42
 PASS +values.someFloat - +values.zero is values.someFloat - values.zero
 PASS +values.someFloat - +values.zero is 42.42
 PASS +values.someFloat * values.minusZero is values.someFloat * values.minusZero
-PASS +values.someFloat * values.minusZero is 0
+PASS +values.someFloat * values.minusZero is -0
 PASS values.someFloat * +values.minusZero is values.someFloat * values.minusZero
-PASS values.someFloat * +values.minusZero is 0
+PASS values.someFloat * +values.minusZero is -0
 PASS +values.someFloat * +values.minusZero is values.someFloat * values.minusZero
-PASS +values.someFloat * +values.minusZero is 0
+PASS +values.someFloat * +values.minusZero is -0
 PASS +values.someFloat / values.minusZero is values.someFloat / values.minusZero
 PASS +values.someFloat / values.minusZero is -Infinity
 PASS values.someFloat / +values.minusZero is values.someFloat / values.minusZero
@@ -378,11 +378,11 @@ PASS values.someFloat * +values.minusInfinity is -Infinity
 PASS +values.someFloat * +values.minusInfinity is values.someFloat * values.minusInfinity
 PASS +values.someFloat * +values.minusInfinity is -Infinity
 PASS +values.someFloat / values.minusInfinity is values.someFloat / values.minusInfinity
-PASS +values.someFloat / values.minusInfinity is 0
+PASS +values.someFloat / values.minusInfinity is -0
 PASS values.someFloat / +values.minusInfinity is values.someFloat / values.minusInfinity
-PASS values.someFloat / +values.minusInfinity is 0
+PASS values.someFloat / +values.minusInfinity is -0
 PASS +values.someFloat / +values.minusInfinity is values.someFloat / values.minusInfinity
-PASS +values.someFloat / +values.minusInfinity is 0
+PASS +values.someFloat / +values.minusInfinity is -0
 PASS +values.someFloat - values.minusInfinity is values.someFloat - values.minusInfinity
 PASS +values.someFloat - values.minusInfinity is Infinity
 PASS values.someFloat - +values.minusInfinity is values.someFloat - values.minusInfinity
@@ -534,11 +534,11 @@ PASS values.one - +values.zero is 1
 PASS +values.one - +values.zero is values.one - values.zero
 PASS +values.one - +values.zero is 1
 PASS +values.one * values.minusZero is values.one * values.minusZero
-PASS +values.one * values.minusZero is 0
+PASS +values.one * values.minusZero is -0
 PASS values.one * +values.minusZero is values.one * values.minusZero
-PASS values.one * +values.minusZero is 0
+PASS values.one * +values.minusZero is -0
 PASS +values.one * +values.minusZero is values.one * values.minusZero
-PASS +values.one * +values.minusZero is 0
+PASS +values.one * +values.minusZero is -0
 PASS +values.one / values.minusZero is values.one / values.minusZero
 PASS +values.one / values.minusZero is -Infinity
 PASS values.one / +values.minusZero is values.one / values.minusZero
@@ -576,11 +576,11 @@ PASS values.one * +values.minusInfinity is -Infinity
 PASS +values.one * +values.minusInfinity is values.one * values.minusInfinity
 PASS +values.one * +values.minusInfinity is -Infinity
 PASS +values.one / values.minusInfinity is values.one / values.minusInfinity
-PASS +values.one / values.minusInfinity is 0
+PASS +values.one / values.minusInfinity is -0
 PASS values.one / +values.minusInfinity is values.one / values.minusInfinity
-PASS values.one / +values.minusInfinity is 0
+PASS values.one / +values.minusInfinity is -0
 PASS +values.one / +values.minusInfinity is values.one / values.minusInfinity
-PASS +values.one / +values.minusInfinity is 0
+PASS +values.one / +values.minusInfinity is -0
 PASS +values.one - values.minusInfinity is values.one - values.minusInfinity
 PASS +values.one - values.minusInfinity is Infinity
 PASS values.one - +values.minusInfinity is values.one - values.minusInfinity
@@ -756,11 +756,11 @@ PASS values.minusOne * +values.infinity is -Infinity
 PASS +values.minusOne * +values.infinity is values.minusOne * values.infinity
 PASS +values.minusOne * +values.infinity is -Infinity
 PASS +values.minusOne / values.infinity is values.minusOne / values.infinity
-PASS +values.minusOne / values.infinity is 0
+PASS +values.minusOne / values.infinity is -0
 PASS values.minusOne / +values.infinity is values.minusOne / values.infinity
-PASS values.minusOne / +values.infinity is 0
+PASS values.minusOne / +values.infinity is -0
 PASS +values.minusOne / +values.infinity is values.minusOne / values.infinity
-PASS +values.minusOne / +values.infinity is 0
+PASS +values.minusOne / +values.infinity is -0
 PASS +values.minusOne - values.infinity is values.minusOne - values.infinity
 PASS +values.minusOne - values.infinity is -Infinity
 PASS values.minusOne - +values.infinity is values.minusOne - values.infinity
@@ -900,11 +900,11 @@ PASS values.zero * +values.minusOne is 0
 PASS +values.zero * +values.minusOne is values.zero * values.minusOne
 PASS +values.zero * +values.minusOne is 0
 PASS +values.zero / values.minusOne is values.zero / values.minusOne
-PASS +values.zero / values.minusOne is 0
+PASS +values.zero / values.minusOne is -0
 PASS values.zero / +values.minusOne is values.zero / values.minusOne
-PASS values.zero / +values.minusOne is 0
+PASS values.zero / +values.minusOne is -0
 PASS +values.zero / +values.minusOne is values.zero / values.minusOne
-PASS +values.zero / +values.minusOne is 0
+PASS +values.zero / +values.minusOne is -0
 PASS +values.zero - values.minusOne is values.zero - values.minusOne
 PASS +values.zero - values.minusOne is 1
 PASS values.zero - +values.minusOne is values.zero - values.minusOne
@@ -930,11 +930,11 @@ PASS values.zero - +values.zero is 0
 PASS +values.zero - +values.zero is values.zero - values.zero
 PASS +values.zero - +values.zero is 0
 PASS +values.zero * values.minusZero is values.zero * values.minusZero
-PASS +values.zero * values.minusZero is 0
+PASS +values.zero * values.minusZero is -0
 PASS values.zero * +values.minusZero is values.zero * values.minusZero
-PASS values.zero * +values.minusZero is 0
+PASS values.zero * +values.minusZero is -0
 PASS +values.zero * +values.minusZero is values.zero * values.minusZero
-PASS +values.zero * +values.minusZero is 0
+PASS +values.zero * +values.minusZero is -0
 PASS +values.zero / values.minusZero is values.zero / values.minusZero
 PASS +values.zero / values.minusZero is NaN
 PASS values.zero / +values.minusZero is values.zero / values.minusZero
@@ -972,11 +972,11 @@ PASS values.zero * +values.minusInfinity is NaN
 PASS +values.zero * +values.minusInfinity is values.zero * values.minusInfinity
 PASS +values.zero * +values.minusInfinity is NaN
 PASS +values.zero / values.minusInfinity is values.zero / values.minusInfinity
-PASS +values.zero / values.minusInfinity is 0
+PASS +values.zero / values.minusInfinity is -0
 PASS values.zero / +values.minusInfinity is values.zero / values.minusInfinity
-PASS values.zero / +values.minusInfinity is 0
+PASS values.zero / +values.minusInfinity is -0
 PASS +values.zero / +values.minusInfinity is values.zero / values.minusInfinity
-PASS +values.zero / +values.minusInfinity is 0
+PASS +values.zero / +values.minusInfinity is -0
 PASS +values.zero - values.minusInfinity is values.zero - values.minusInfinity
 PASS +values.zero - values.minusInfinity is Infinity
 PASS values.zero - +values.minusInfinity is values.zero - values.minusInfinity
@@ -1038,17 +1038,17 @@ PASS values.zero - +values.someFloatString is -42.42
 PASS +values.zero - +values.someFloatString is values.zero - values.someFloatString
 PASS +values.zero - +values.someFloatString is -42.42
 PASS +values.minusZero * values.someInt is values.minusZero * values.someInt
-PASS +values.minusZero * values.someInt is 0
+PASS +values.minusZero * values.someInt is -0
 PASS values.minusZero * +values.someInt is values.minusZero * values.someInt
-PASS values.minusZero * +values.someInt is 0
+PASS values.minusZero * +values.someInt is -0
 PASS +values.minusZero * +values.someInt is values.minusZero * values.someInt
-PASS +values.minusZero * +values.someInt is 0
+PASS +values.minusZero * +values.someInt is -0
 PASS +values.minusZero / values.someInt is values.minusZero / values.someInt
-PASS +values.minusZero / values.someInt is 0
+PASS +values.minusZero / values.someInt is -0
 PASS values.minusZero / +values.someInt is values.minusZero / values.someInt
-PASS values.minusZero / +values.someInt is 0
+PASS values.minusZero / +values.someInt is -0
 PASS +values.minusZero / +values.someInt is values.minusZero / values.someInt
-PASS +values.minusZero / +values.someInt is 0
+PASS +values.minusZero / +values.someInt is -0
 PASS +values.minusZero - values.someInt is values.minusZero - values.someInt
 PASS +values.minusZero - values.someInt is -42
 PASS values.minusZero - +values.someInt is values.minusZero - values.someInt
@@ -1056,17 +1056,17 @@ PASS values.minusZero - +values.someInt is -42
 PASS +values.minusZero - +values.someInt is values.minusZero - values.someInt
 PASS +values.minusZero - +values.someInt is -42
 PASS +values.minusZero * values.someFloat is values.minusZero * values.someFloat
-PASS +values.minusZero * values.someFloat is 0
+PASS +values.minusZero * values.someFloat is -0
 PASS values.minusZero * +values.someFloat is values.minusZero * values.someFloat
-PASS values.minusZero * +values.someFloat is 0
+PASS values.minusZero * +values.someFloat is -0
 PASS +values.minusZero * +values.someFloat is values.minusZero * values.someFloat
-PASS +values.minusZero * +values.someFloat is 0
+PASS +values.minusZero * +values.someFloat is -0
 PASS +values.minusZero / values.someFloat is values.minusZero / values.someFloat
-PASS +values.minusZero / values.someFloat is 0
+PASS +values.minusZero / values.someFloat is -0
 PASS values.minusZero / +values.someFloat is values.minusZero / values.someFloat
-PASS values.minusZero / +values.someFloat is 0
+PASS values.minusZero / +values.someFloat is -0
 PASS +values.minusZero / +values.someFloat is values.minusZero / values.someFloat
-PASS +values.minusZero / +values.someFloat is 0
+PASS +values.minusZero / +values.someFloat is -0
 PASS +values.minusZero - values.someFloat is values.minusZero - values.someFloat
 PASS +values.minusZero - values.someFloat is -42.42
 PASS values.minusZero - +values.someFloat is values.minusZero - values.someFloat
@@ -1074,17 +1074,17 @@ PASS values.minusZero - +values.someFloat is -42.42
 PASS +values.minusZero - +values.someFloat is values.minusZero - values.someFloat
 PASS +values.minusZero - +values.someFloat is -42.42
 PASS +values.minusZero * values.one is values.minusZero * values.one
-PASS +values.minusZero * values.one is 0
+PASS +values.minusZero * values.one is -0
 PASS values.minusZero * +values.one is values.minusZero * values.one
-PASS values.minusZero * +values.one is 0
+PASS values.minusZero * +values.one is -0
 PASS +values.minusZero * +values.one is values.minusZero * values.one
-PASS +values.minusZero * +values.one is 0
+PASS +values.minusZero * +values.one is -0
 PASS +values.minusZero / values.one is values.minusZero / values.one
-PASS +values.minusZero / values.one is 0
+PASS +values.minusZero / values.one is -0
 PASS values.minusZero / +values.one is values.minusZero / values.one
-PASS values.minusZero / +values.one is 0
+PASS values.minusZero / +values.one is -0
 PASS +values.minusZero / +values.one is values.minusZero / values.one
-PASS +values.minusZero / +values.one is 0
+PASS +values.minusZero / +values.one is -0
 PASS +values.minusZero - values.one is values.minusZero - values.one
 PASS +values.minusZero - values.one is -1
 PASS values.minusZero - +values.one is values.minusZero - values.one
@@ -1110,11 +1110,11 @@ PASS values.minusZero - +values.minusOne is 1
 PASS +values.minusZero - +values.minusOne is values.minusZero - values.minusOne
 PASS +values.minusZero - +values.minusOne is 1
 PASS +values.minusZero * values.zero is values.minusZero * values.zero
-PASS +values.minusZero * values.zero is 0
+PASS +values.minusZero * values.zero is -0
 PASS values.minusZero * +values.zero is values.minusZero * values.zero
-PASS values.minusZero * +values.zero is 0
+PASS values.minusZero * +values.zero is -0
 PASS +values.minusZero * +values.zero is values.minusZero * values.zero
-PASS +values.minusZero * +values.zero is 0
+PASS +values.minusZero * +values.zero is -0
 PASS +values.minusZero / values.zero is values.minusZero / values.zero
 PASS +values.minusZero / values.zero is NaN
 PASS values.minusZero / +values.zero is values.minusZero / values.zero
@@ -1122,11 +1122,11 @@ PASS values.minusZero / +values.zero is NaN
 PASS +values.minusZero / +values.zero is values.minusZero / values.zero
 PASS +values.minusZero / +values.zero is NaN
 PASS +values.minusZero - values.zero is values.minusZero - values.zero
-PASS +values.minusZero - values.zero is 0
+PASS +values.minusZero - values.zero is -0
 PASS values.minusZero - +values.zero is values.minusZero - values.zero
-PASS values.minusZero - +values.zero is 0
+PASS values.minusZero - +values.zero is -0
 PASS +values.minusZero - +values.zero is values.minusZero - values.zero
-PASS +values.minusZero - +values.zero is 0
+PASS +values.minusZero - +values.zero is -0
 PASS +values.minusZero * values.minusZero is values.minusZero * values.minusZero
 PASS +values.minusZero * values.minusZero is 0
 PASS values.minusZero * +values.minusZero is values.minusZero * values.minusZero
@@ -1152,11 +1152,11 @@ PASS values.minusZero * +values.infinity is NaN
 PASS +values.minusZero * +values.infinity is values.minusZero * values.infinity
 PASS +values.minusZero * +values.infinity is NaN
 PASS +values.minusZero / values.infinity is values.minusZero / values.infinity
-PASS +values.minusZero / values.infinity is 0
+PASS +values.minusZero / values.infinity is -0
 PASS values.minusZero / +values.infinity is values.minusZero / values.infinity
-PASS values.minusZero / +values.infinity is 0
+PASS values.minusZero / +values.infinity is -0
 PASS +values.minusZero / +values.infinity is values.minusZero / values.infinity
-PASS +values.minusZero / +values.infinity is 0
+PASS +values.minusZero / +values.infinity is -0
 PASS +values.minusZero - values.infinity is values.minusZero - values.infinity
 PASS +values.minusZero - values.infinity is -Infinity
 PASS values.minusZero - +values.infinity is values.minusZero - values.infinity
@@ -1218,17 +1218,17 @@ PASS values.minusZero - +values.nonNumberString is NaN
 PASS +values.minusZero - +values.nonNumberString is values.minusZero - values.nonNumberString
 PASS +values.minusZero - +values.nonNumberString is NaN
 PASS +values.minusZero * values.someFloatString is values.minusZero * values.someFloatString
-PASS +values.minusZero * values.someFloatString is 0
+PASS +values.minusZero * values.someFloatString is -0
 PASS values.minusZero * +values.someFloatString is values.minusZero * values.someFloatString
-PASS values.minusZero * +values.someFloatString is 0
+PASS values.minusZero * +values.someFloatString is -0
 PASS +values.minusZero * +values.someFloatString is values.minusZero * values.someFloatString
-PASS +values.minusZero * +values.someFloatString is 0
+PASS +values.minusZero * +values.someFloatString is -0
 PASS +values.minusZero / values.someFloatString is values.minusZero / values.someFloatString
-PASS +values.minusZero / values.someFloatString is 0
+PASS +values.minusZero / values.someFloatString is -0
 PASS values.minusZero / +values.someFloatString is values.minusZero / values.someFloatString
-PASS values.minusZero / +values.someFloatString is 0
+PASS values.minusZero / +values.someFloatString is -0
 PASS +values.minusZero / +values.someFloatString is values.minusZero / values.someFloatString
-PASS +values.minusZero / +values.someFloatString is 0
+PASS +values.minusZero / +values.someFloatString is -0
 PASS +values.minusZero - values.someFloatString is values.minusZero - values.someFloatString
 PASS +values.minusZero - values.someFloatString is -42.42
 PASS values.minusZero - +values.someFloatString is values.minusZero - values.someFloatString
@@ -2118,11 +2118,11 @@ PASS values.someFloatString - +values.zero is 42.42
 PASS +values.someFloatString - +values.zero is values.someFloatString - values.zero
 PASS +values.someFloatString - +values.zero is 42.42
 PASS +values.someFloatString * values.minusZero is values.someFloatString * values.minusZero
-PASS +values.someFloatString * values.minusZero is 0
+PASS +values.someFloatString * values.minusZero is -0
 PASS values.someFloatString * +values.minusZero is values.someFloatString * values.minusZero
-PASS values.someFloatString * +values.minusZero is 0
+PASS values.someFloatString * +values.minusZero is -0
 PASS +values.someFloatString * +values.minusZero is values.someFloatString * values.minusZero
-PASS +values.someFloatString * +values.minusZero is 0
+PASS +values.someFloatString * +values.minusZero is -0
 PASS +values.someFloatString / values.minusZero is values.someFloatString / values.minusZero
 PASS +values.someFloatString / values.minusZero is -Infinity
 PASS values.someFloatString / +values.minusZero is values.someFloatString / values.minusZero
@@ -2160,11 +2160,11 @@ PASS values.someFloatString * +values.minusInfinity is -Infinity
 PASS +values.someFloatString * +values.minusInfinity is values.someFloatString * values.minusInfinity
 PASS +values.someFloatString * +values.minusInfinity is -Infinity
 PASS +values.someFloatString / values.minusInfinity is values.someFloatString / values.minusInfinity
-PASS +values.someFloatString / values.minusInfinity is 0
+PASS +values.someFloatString / values.minusInfinity is -0
 PASS values.someFloatString / +values.minusInfinity is values.someFloatString / values.minusInfinity
-PASS values.someFloatString / +values.minusInfinity is 0
+PASS values.someFloatString / +values.minusInfinity is -0
 PASS +values.someFloatString / +values.minusInfinity is values.someFloatString / values.minusInfinity
-PASS +values.someFloatString / +values.minusInfinity is 0
+PASS +values.someFloatString / +values.minusInfinity is -0
 PASS +values.someFloatString - values.minusInfinity is values.someFloatString - values.minusInfinity
 PASS +values.someFloatString - values.minusInfinity is Infinity
 PASS values.someFloatString - +values.minusInfinity is values.someFloatString - values.minusInfinity
index 4aab69c0dcd2a5934d9f448adce75bf2a59a2acc..27ba72ca503d0a8c65456babe192bf96e6014025 100644 (file)
@@ -433,7 +433,7 @@ shouldBe('-3.1', '-3.1');
 shouldBe('- -3.1', '3.1');
 shouldBe('-"3.1"', '-3.1');
 shouldBe('-true', '-1');
-shouldBe('-false', '0');
+shouldBe('-false', '-0');
 
 shouldBe('~3', '-4');
 shouldBe('~ ~3', '3');
index 4058a14613fd7d96252a3fcc8b7913fe060ce33b..259ffcbb2c36588ef062414aeaf547f4ce052ca3 100644 (file)
@@ -45,8 +45,17 @@ function areArraysEqual(_a, _b)
     return true;
 }
 
+function isMinusZero(n)
+{
+    // the only way to tell 0 from -0 in JS is the fact that 1/-0 is
+    // -Infinity instead of Infinity
+    return n === 0 && 1/n < 0;
+}
+
 function isResultCorrect(_actual, _expected)
 {
+    if (_expected === 0)
+        return _actual === _expected && (1/_actual) === (1/_expected);
     if (_actual === _expected)
         return true;
     if (typeof(_expected) == "number" && isNaN(_expected))
@@ -56,6 +65,13 @@ function isResultCorrect(_actual, _expected)
     return false;
 }
 
+function stringify(v)
+{
+    if (v === 0 && 1/v < 0)
+        return "-0";
+    else return "" + v;
+}
+
 function shouldBe(_a, _b)
 {
   if (typeof _a != "string" || typeof _b != "string")
@@ -74,7 +90,7 @@ function shouldBe(_a, _b)
   else if (isResultCorrect(_av, _bv))
     testPassed(_a + " is " + _b);
   else if (typeof(_av) == typeof(_bv))
-    testFailed(_a + " should be " + _bv + ". Was " + _av + ".");
+    testFailed(_a + " should be " + _bv + ". Was " + stringify(_av) + ".");
   else
     testFailed(_a + " should be " + _bv + " (of type " + typeof _bv + "). Was " + _av + " (of type " + typeof _av + ").");
 }
index 76a9aa24adbb0ae952b03cafa0539e80100e2e6b..f294c2497b5561a7d7b345eef70d6da1f18d0d04 100644 (file)
@@ -27,10 +27,10 @@ for (var name in values) {
     var numForStr = numberForString[name] ? numberForString[name] : name;
 
     shouldBe("values." + name + " * 1", "+values." + name);
-    shouldBe("values." + name + " * 1", "" + values[numForStr]);
+    shouldBe("values." + name + " * 1", stringify(values[numForStr]));
 
     shouldBe("1 * values." + name, "+values." + name);
-    shouldBe("1 * values." + name, "" + values[numForStr]);
+    shouldBe("1 * values." + name, stringify(values[numForStr]));
 }
 
 for (var name1 in values) {
@@ -39,25 +39,25 @@ for (var name1 in values) {
         var numForStr2 = numberForString[name2] ? numberForString[name2] : name2;
 
         shouldBe("+values." + name1 + " * values." + name2, "values." + name1 + " * values." + name2);
-        shouldBe("+values." + name1 + " * values." + name2, "" + (values[name1] * values[name2]));
+        shouldBe("+values." + name1 + " * values." + name2, stringify(values[name1] * values[name2]));
         shouldBe("values." + name1 + " * +values." + name2, "values." + name1 + " * values." + name2);
-        shouldBe("values." + name1 + " * +values." + name2, "" + (values[name1] * values[name2]));
+        shouldBe("values." + name1 + " * +values." + name2, stringify(values[name1] * values[name2]));
         shouldBe("+values." + name1 + " * +values." + name2, "values." + name1 + " * values." + name2);
-        shouldBe("+values." + name1 + " * +values." + name2, "" + (values[name1] * values[name2]));
+        shouldBe("+values." + name1 + " * +values." + name2, stringify(values[name1] * values[name2]));
 
         shouldBe("+values." + name1 + " / values." + name2, "values." + name1 + " / values." + name2);
-        shouldBe("+values." + name1 + " / values." + name2, "" + (values[name1] / values[name2]));
+        shouldBe("+values." + name1 + " / values." + name2, stringify(values[name1] / values[name2]));
         shouldBe("values." + name1 + " / +values." + name2, "values." + name1 + " / values." + name2);
-        shouldBe("values." + name1 + " / +values." + name2, "" + (values[name1] / values[name2]));
+        shouldBe("values." + name1 + " / +values." + name2, stringify(values[name1] / values[name2]));
         shouldBe("+values." + name1 + " / +values." + name2, "values." + name1 + " / values." + name2);
-        shouldBe("+values." + name1 + " / +values." + name2, "" + (values[name1] / values[name2]));
+        shouldBe("+values." + name1 + " / +values." + name2, stringify(values[name1] / values[name2]));
 
         shouldBe("+values." + name1 + " - values." + name2, "values." + name1 + " - values." + name2);
-        shouldBe("+values." + name1 + " - values." + name2, "" + (values[name1] - values[name2]));
+        shouldBe("+values." + name1 + " - values." + name2, stringify(values[name1] - values[name2]));
         shouldBe("values." + name1 + " - +values." + name2, "values." + name1 + " - values." + name2);
-        shouldBe("values." + name1 + " - +values." + name2, "" + (values[name1] - values[name2]));
+        shouldBe("values." + name1 + " - +values." + name2, stringify(values[name1] - values[name2]));
         shouldBe("+values." + name1 + " - +values." + name2, "values." + name1 + " - values." + name2);
-        shouldBe("+values." + name1 + " - +values." + name2, "" + (values[name1] - values[name2]));
+        shouldBe("+values." + name1 + " - +values." + name2, stringify(values[name1] - values[name2]));
     }
 }