Index: test/webkit/constant-folding.js |
diff --git a/test/webkit/constant-folding.js b/test/webkit/constant-folding.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a348eeaaa565fdf2050c023cc0d78f664d9a9733 |
--- /dev/null |
+++ b/test/webkit/constant-folding.js |
@@ -0,0 +1,491 @@ |
+// Copyright 2013 the V8 project authors. All rights reserved. |
+// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. |
+// |
+// Redistribution and use in source and binary forms, with or without |
+// modification, are permitted provided that the following conditions |
+// are met: |
+// 1. Redistributions of source code must retain the above copyright |
+// notice, this list of conditions and the following disclaimer. |
+// 2. Redistributions in binary form must reproduce the above copyright |
+// notice, this list of conditions and the following disclaimer in the |
+// documentation and/or other materials provided with the distribution. |
+// |
+// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY |
+// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
+// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
+// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY |
+// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
+// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
+// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
+// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+ |
+description( |
+"This test checks some cases that might be affected by constant folding." |
+); |
+ |
+shouldBe('"abc" + "2.1"', '"abc2.1"'); |
+shouldBe('"123" + "2.1"', '"1232.1"'); |
+shouldBe('"123" + "="', '"123="'); |
+shouldBe('"*" + "123"', '"*123"'); |
+ |
+shouldBe('!"abc"', 'false'); |
+shouldBe('!""', 'true'); |
+ |
+shouldBe('10.3 + 2.1', '12.4'); |
+shouldBe('10.3 + "2.1"', '"10.32.1"'); |
+shouldBe('"10.3" + 2.1 ', '"10.32.1"'); |
+shouldBe('"10.3" + "2.1"', '"10.32.1"'); |
+shouldBe('10.3 + true', '11.3'); |
+shouldBe('"10.3" + true', '"10.3true"'); |
+shouldBe('10.3 + false', '10.3'); |
+shouldBe('"10.3" + false', '"10.3false"'); |
+shouldBe('true + 2.1', '3.1'); |
+shouldBe('true + "2.1"', '"true2.1"'); |
+shouldBe('false + 2.1', '2.1'); |
+shouldBe('false + "2.1"', '"false2.1"'); |
+ |
+shouldBe('10.3 - 2.1', '8.200000000000001'); |
+shouldBe('10.3 - "2.1"', '8.200000000000001'); |
+shouldBe('"10.3" - 2.1 ', '8.200000000000001'); |
+shouldBe('"10.3" - "2.1"', '8.200000000000001'); |
+shouldBe('10.3 - true', '9.3'); |
+shouldBe('"10.3" - true', '9.3'); |
+shouldBe('10.3 - false', '10.3'); |
+shouldBe('"10.3" - false', '10.3'); |
+shouldBe('true - 2.1', '-1.1'); |
+shouldBe('true - "2.1"', '-1.1'); |
+shouldBe('false - 2.1', '-2.1'); |
+shouldBe('false - "2.1"', '-2.1'); |
+ |
+shouldBe('10.3 * 2.1', '21.630000000000003'); |
+shouldBe('10.3 * "2.1"', '21.630000000000003'); |
+shouldBe('"10.3" * 2.1', '21.630000000000003'); |
+shouldBe('"10.3" * "2.1"', '21.630000000000003'); |
+shouldBe('10.3 * true', '10.3'); |
+shouldBe('"10.3" * true', '10.3'); |
+shouldBe('10.3 * false', '0'); |
+shouldBe('"10.3" * false', '0'); |
+shouldBe('true * 10.3', '10.3'); |
+shouldBe('true * "10.3"', '10.3'); |
+shouldBe('false * 10.3', '0'); |
+shouldBe('false * "10.3"', '0'); |
+ |
+shouldBe('10.3 / 2', '5.15'); |
+shouldBe('"10.3" / 2', '5.15'); |
+shouldBe('10.3 / "2"', '5.15'); |
+shouldBe('"10.3" / "2"', '5.15'); |
+shouldBe('10.3 / true', '10.3'); |
+shouldBe('"10.3" / true', '10.3'); |
+shouldBe('true / 2', '0.5'); |
+shouldBe('true / "2"', '0.5'); |
+shouldBe('false / 2', '0'); |
+shouldBe('false / "2"', '0'); |
+ |
+shouldBe('10.3 % 2.1', '1.9000000000000004'); |
+shouldBe('"10.3" % 2.1', '1.9000000000000004'); |
+shouldBe('10.3 % "2.1"', '1.9000000000000004'); |
+shouldBe('"10.3" % "2.1"', '1.9000000000000004'); |
+shouldBe('10.3 % true', '0.3000000000000007'); |
+shouldBe('"10.3" % true', '0.3000000000000007'); |
+shouldBe('true % 2', '1'); |
+shouldBe('true % "2"', '1'); |
+shouldBe('false % 2', '0'); |
+shouldBe('false % "2"', '0'); |
+ |
+shouldBe('10.3 << 2.1', '40'); |
+shouldBe('"10.3" << 2.1', '40'); |
+shouldBe('10.3 << "2.1"', '40'); |
+shouldBe('"10.3" << "2.1"', '40'); |
+shouldBe('10.3 << true', '20'); |
+shouldBe('"10.3" << true', '20'); |
+shouldBe('10.3 << false', '10'); |
+shouldBe('"10.3" << false', '10'); |
+shouldBe('true << 2.1', '4'); |
+shouldBe('true << "2.1"', '4'); |
+shouldBe('false << 2.1', '0'); |
+shouldBe('false << "2.1"', '0'); |
+ |
+shouldBe('10.3 >> 2.1', '2'); |
+shouldBe('"10.3" >> 2.1', '2'); |
+shouldBe('10.3 >> "2.1"', '2'); |
+shouldBe('"10.3" >> "2.1"', '2'); |
+shouldBe('10.3 >> true', '5'); |
+shouldBe('"10.3" >> true', '5'); |
+shouldBe('10.3 >> false', '10'); |
+shouldBe('"10.3" >> false', '10'); |
+shouldBe('true >> 2.1', '0'); |
+shouldBe('true >> "2.1"', '0'); |
+shouldBe('false >> 2.1', '0'); |
+shouldBe('false >> "2.1"', '0'); |
+ |
+shouldBe('-10.3 >>> 2.1', '1073741821'); |
+shouldBe('"-10.3">>> 2.1', '1073741821'); |
+shouldBe('-10.3 >>> "2.1"', '1073741821'); |
+shouldBe('"-10.3">>> "2.1"', '1073741821'); |
+shouldBe('-10.3 >>> true', '2147483643'); |
+shouldBe('"-10.3">>> true', '2147483643'); |
+shouldBe('-10.3 >>> false', '4294967286'); |
+shouldBe('"-10.3" >>> false', '4294967286'); |
+shouldBe('true >>> 2.1', '0'); |
+shouldBe('true >>> "2.1"', '0'); |
+shouldBe('false >>> 2.1', '0'); |
+shouldBe('false >>> "2.1"', '0'); |
+ |
+ |
+shouldBe('10.3 & 3.1', '2'); |
+shouldBe('"10.3" & 3.1', '2'); |
+shouldBe('10.3 & "3.1"', '2'); |
+shouldBe('"10.3" & "3.1"', '2'); |
+shouldBe('10.3 & true', '0'); |
+shouldBe('"10.3" & true', '0'); |
+shouldBe('11.3 & true', '1'); |
+shouldBe('"11.3" & true', '1'); |
+shouldBe('10.3 & false', '0'); |
+shouldBe('"10.3" & false', '0'); |
+shouldBe('11.3 & false', '0'); |
+shouldBe('"11.3" & false', '0'); |
+shouldBe('true & 3.1', '1'); |
+shouldBe('true & "3.1"', '1'); |
+shouldBe('true & 2.1', '0'); |
+shouldBe('true & "2.1"', '0'); |
+shouldBe('false & 3.1', '0'); |
+shouldBe('false & "3.1"', '0'); |
+shouldBe('false & 2.1', '0'); |
+shouldBe('false & "2.1"', '0'); |
+ |
+ |
+shouldBe('10.3 | 3.1', '11'); |
+shouldBe('"10.3" | 3.1', '11'); |
+shouldBe('10.3 | "3.1"', '11'); |
+shouldBe('"10.3" | "3.1"', '11'); |
+shouldBe('10.3 | true', '11'); |
+shouldBe('"10.3" | true', '11'); |
+shouldBe('11.3 | true', '11'); |
+shouldBe('"11.3" | true', '11'); |
+shouldBe('10.3 | false', '10'); |
+shouldBe('"10.3" | false', '10'); |
+shouldBe('11.3 | false', '11'); |
+shouldBe('"11.3" | false', '11'); |
+shouldBe('true | 3.1', '3'); |
+shouldBe('true | "3.1"', '3'); |
+shouldBe('true | 2.1', '3'); |
+shouldBe('true | "2.1"', '3'); |
+shouldBe('false | 3.1', '3'); |
+shouldBe('false | "3.1"', '3'); |
+shouldBe('false | 2.1', '2'); |
+shouldBe('false | "2.1"', '2'); |
+ |
+shouldBe('10.3 ^ 3.1', '9'); |
+shouldBe('"10.3" ^ 3.1', '9'); |
+shouldBe('10.3 ^ "3.1"', '9'); |
+shouldBe('"10.3" ^ "3.1"', '9'); |
+shouldBe('10.3 ^ true', '11'); |
+shouldBe('"10.3" ^ true', '11'); |
+shouldBe('11.3 ^ true', '10'); |
+shouldBe('"11.3" ^ true', '10'); |
+shouldBe('10.3 ^ false', '10'); |
+shouldBe('"10.3" ^ false', '10'); |
+shouldBe('11.3 ^ false', '11'); |
+shouldBe('"11.3" ^ false', '11'); |
+shouldBe('true ^ 3.1', '2'); |
+shouldBe('true ^ "3.1"', '2'); |
+shouldBe('true ^ 2.1', '3'); |
+shouldBe('true ^ "2.1"', '3'); |
+shouldBe('false ^ 3.1', '3'); |
+shouldBe('false ^ "3.1"', '3'); |
+shouldBe('false ^ 2.1', '2'); |
+shouldBe('false ^ "2.1"', '2'); |
+ |
+shouldBe('10.3 == 3.1', 'false'); |
+shouldBe('3.1 == 3.1', 'true'); |
+shouldBe('"10.3" == 3.1', 'false'); |
+shouldBe('"3.1" == 3.1', 'true'); |
+shouldBe('10.3 == "3.1"', 'false'); |
+shouldBe('3.1 == "3.1"', 'true'); |
+shouldBe('"10.3" == "3.1"', 'false'); |
+shouldBe('"3.1" == "3.1"', 'true'); |
+shouldBe('10.3 == true', 'false'); |
+shouldBe('1 == true', 'true'); |
+shouldBe('"10.3" == true', 'false'); |
+shouldBe('"1" == true', 'true'); |
+shouldBe('10.3 == false', 'false'); |
+shouldBe('0 == false', 'true'); |
+shouldBe('"10.3" == false', 'false'); |
+shouldBe('"0" == false', 'true'); |
+shouldBe('true == 3.1', 'false'); |
+shouldBe('true == 1', 'true'); |
+shouldBe('true == "3.1"', 'false'); |
+shouldBe('true == "1" ', 'true'); |
+shouldBe('false == 3.1', 'false'); |
+shouldBe('false == 0', 'true'); |
+shouldBe('false == "3.1"', 'false'); |
+shouldBe('false == "0"', 'true'); |
+shouldBe('true == true', 'true'); |
+shouldBe('false == true', 'false'); |
+shouldBe('true == false', 'false'); |
+shouldBe('false == false', 'true'); |
+ |
+shouldBe('10.3 != 3.1', 'true'); |
+shouldBe('3.1 != 3.1', 'false'); |
+shouldBe('"10.3" != 3.1', 'true'); |
+shouldBe('"3.1" != 3.1', 'false'); |
+shouldBe('10.3 != "3.1"', 'true'); |
+shouldBe('3.1 != "3.1"', 'false'); |
+shouldBe('"10.3" != "3.1"', 'true'); |
+shouldBe('"3.1" != "3.1"', 'false'); |
+shouldBe('10.3 != true', 'true'); |
+shouldBe('1 != true', 'false'); |
+shouldBe('"10.3" != true', 'true'); |
+shouldBe('"1" != true', 'false'); |
+shouldBe('10.3 != false', 'true'); |
+shouldBe('0 != false', 'false'); |
+shouldBe('"10.3" != false', 'true'); |
+shouldBe('"0" != false', 'false'); |
+shouldBe('true != 3.1', 'true'); |
+shouldBe('true != 1', 'false'); |
+shouldBe('true != "3.1"', 'true'); |
+shouldBe('true != "1" ', 'false'); |
+shouldBe('false != 3.1', 'true'); |
+shouldBe('false != 0', 'false'); |
+shouldBe('false != "3.1"', 'true'); |
+shouldBe('false != "0"', 'false'); |
+shouldBe('true != true', 'false'); |
+shouldBe('false != true', 'true'); |
+shouldBe('true != false', 'true'); |
+shouldBe('false != false', 'false'); |
+ |
+shouldBe('10.3 > 3.1', 'true'); |
+shouldBe('3.1 > 3.1', 'false'); |
+shouldBe('"10.3" > 3.1', 'true'); |
+shouldBe('"3.1" > 3.1', 'false'); |
+shouldBe('10.3 > "3.1"', 'true'); |
+shouldBe('3.1 > "3.1"', 'false'); |
+shouldBe('"10.3" > "3.1"', 'false'); |
+shouldBe('"3.1" > "3.1"', 'false'); |
+shouldBe('10.3 > true', 'true'); |
+shouldBe('0 > true', 'false'); |
+shouldBe('"10.3" > true', 'true'); |
+shouldBe('"0" > true', 'false'); |
+shouldBe('10.3 > false', 'true'); |
+shouldBe('-1 > false', 'false'); |
+shouldBe('"10.3" > false', 'true'); |
+shouldBe('"-1" > false', 'false'); |
+shouldBe('true > 0.1', 'true'); |
+shouldBe('true > 1.1', 'false'); |
+shouldBe('true > "0.1"', 'true'); |
+shouldBe('true > "1.1"', 'false'); |
+shouldBe('false > -3.1', 'true'); |
+shouldBe('false > 0', 'false'); |
+shouldBe('false > "-3.1"', 'true'); |
+shouldBe('false > "0"', 'false'); |
+shouldBe('true > true', 'false'); |
+shouldBe('false > true', 'false'); |
+shouldBe('true > false', 'true'); |
+shouldBe('false > false', 'false'); |
+ |
+shouldBe('10.3 < 3.1', 'false'); |
+shouldBe('2.1 < 3.1', 'true'); |
+shouldBe('"10.3" < 3.1', 'false'); |
+shouldBe('"2.1" < 3.1', 'true'); |
+shouldBe('10.3 < "3.1"', 'false'); |
+shouldBe('2.1 < "3.1"', 'true'); |
+shouldBe('"10.3" < "3.1"', 'true'); |
+shouldBe('"2.1" < "3.1"', 'true'); |
+shouldBe('10.3 < true', 'false'); |
+shouldBe('0 < true', 'true'); |
+shouldBe('"10.3" < true', 'false'); |
+shouldBe('"0" < true', 'true'); |
+shouldBe('10.3 < false', 'false'); |
+shouldBe('-1 < false', 'true'); |
+shouldBe('"10.3" < false', 'false'); |
+shouldBe('"-1" < false', 'true'); |
+shouldBe('true < 0.1', 'false'); |
+shouldBe('true < 1.1', 'true'); |
+shouldBe('true < "0.1"', 'false'); |
+shouldBe('true < "1.1"', 'true'); |
+shouldBe('false < -3.1', 'false'); |
+shouldBe('false < 0.1', 'true'); |
+shouldBe('false < "-3.1"', 'false'); |
+shouldBe('false < "0.1"', 'true'); |
+shouldBe('true < true', 'false'); |
+shouldBe('false < true', 'true'); |
+shouldBe('true < false', 'false'); |
+shouldBe('false < false', 'false'); |
+ |
+shouldBe('10.3 >= 3.1', 'true'); |
+shouldBe('2.1 >= 3.1', 'false'); |
+shouldBe('"10.3" >= 3.1', 'true'); |
+shouldBe('"2.1" >= 3.1', 'false'); |
+shouldBe('10.3 >= "3.1"', 'true'); |
+shouldBe('2.1 >= "3.1"', 'false'); |
+shouldBe('"10.3" >= "3.1"', 'false'); |
+shouldBe('"2.1" >= "3.1"', 'false'); |
+shouldBe('10.3 >= true', 'true'); |
+shouldBe('0 >= true', 'false'); |
+shouldBe('"10.3" >= true', 'true'); |
+shouldBe('"0" >= true', 'false'); |
+shouldBe('10.3 >= false', 'true'); |
+shouldBe('-1 >= false', 'false'); |
+shouldBe('"10.3" >= false', 'true'); |
+shouldBe('"-1" >= false', 'false'); |
+shouldBe('true >= 0.1', 'true'); |
+shouldBe('true >= 1.1', 'false'); |
+shouldBe('true >= "0.1"', 'true'); |
+shouldBe('true >= "1.1"', 'false'); |
+shouldBe('false >= -3.1', 'true'); |
+shouldBe('false >= 0', 'true'); |
+shouldBe('false >= "-3.1"', 'true'); |
+shouldBe('false >= "0"', 'true'); |
+shouldBe('true >= true', 'true'); |
+shouldBe('false >= true', 'false'); |
+shouldBe('true >= false', 'true'); |
+shouldBe('false >= false', 'true'); |
+ |
+shouldBe('10.3 <= 3.1', 'false'); |
+shouldBe('2.1 <= 3.1', 'true'); |
+shouldBe('"10.3" <= 3.1', 'false'); |
+shouldBe('"2.1" <= 3.1', 'true'); |
+shouldBe('10.3 <= "3.1"', 'false'); |
+shouldBe('2.1 <= "3.1"', 'true'); |
+shouldBe('"10.3" <= "3.1"', 'true'); |
+shouldBe('"2.1" <= "3.1"', 'true'); |
+shouldBe('10.3 <= true', 'false'); |
+shouldBe('0 <= true', 'true'); |
+shouldBe('"10.3" <= true', 'false'); |
+shouldBe('"0" <= true', 'true'); |
+shouldBe('10.3 <= false', 'false'); |
+shouldBe('-1 <= false', 'true'); |
+shouldBe('"10.3" <= false', 'false'); |
+shouldBe('"-1" <= false', 'true'); |
+shouldBe('true <= 0.1', 'false'); |
+shouldBe('true <= 1.1', 'true'); |
+shouldBe('true <= "0.1"', 'false'); |
+shouldBe('true <= "1.1"', 'true'); |
+shouldBe('false <= -3.1', 'false'); |
+shouldBe('false <= 0.1', 'true'); |
+shouldBe('false <= "-3.1"', 'false'); |
+shouldBe('false <= "0.1"', 'true'); |
+shouldBe('true <= true', 'true'); |
+shouldBe('false <= true', 'true'); |
+shouldBe('true <= false', 'false'); |
+shouldBe('false <= false', 'true'); |
+ |
+shouldBe('true && true', 'true'); |
+shouldBe('true && false', 'false'); |
+shouldBe('false && true', 'false'); |
+shouldBe('false && false', 'false'); |
+shouldBe('1.1 && true', 'true'); |
+shouldBe('1.1 && false', 'false'); |
+shouldBe('0 && true', '0'); |
+shouldBe('0 && false', '0'); |
+shouldBe('"1.1" && true', 'true'); |
+shouldBe('"1.1" && false', 'false'); |
+shouldBe('"0" && true', 'true'); |
+shouldBe('"0" && false', 'false'); |
+shouldBe('true && 1.1', '1.1'); |
+shouldBe('true && 0', '0'); |
+shouldBe('false && 1.1', 'false'); |
+shouldBe('false && 0', 'false'); |
+shouldBe('true && "1.1"', '"1.1"'); |
+shouldBe('true && "0"', '"0"'); |
+shouldBe('false && "1.1"', 'false'); |
+shouldBe('false && "0"', 'false'); |
+shouldBe('1.1 && 1.1', '1.1'); |
+shouldBe('1.1 && 0', '0'); |
+shouldBe('0 && 1.1', '0'); |
+shouldBe('0 && 0', '0'); |
+shouldBe('"1.1" && 1.1', '1.1'); |
+shouldBe('"1.1" && 0', '0'); |
+shouldBe('"0" && 1.1', '1.1'); |
+shouldBe('"0" && 0', '0'); |
+shouldBe('1.1 && "1.1"', '"1.1"'); |
+shouldBe('1.1 && "0"', '"0"'); |
+shouldBe('0 && "1.1"', '0'); |
+shouldBe('0 && "0"', '0'); |
+shouldBe('"1.1" && "1.1"', '"1.1"'); |
+shouldBe('"1.1" && "0"', '"0"'); |
+shouldBe('"0" && "1.1"', '"1.1"'); |
+shouldBe('"0" && "0"', '"0"'); |
+ |
+shouldBe('true || true', 'true'); |
+shouldBe('true || false', 'true'); |
+shouldBe('false || true', 'true'); |
+shouldBe('false || false', 'false'); |
+shouldBe('1.1 || true', '1.1'); |
+shouldBe('1.1 || false', '1.1'); |
+shouldBe('0 || true', 'true'); |
+shouldBe('0 || false', 'false'); |
+shouldBe('"1.1" || true', '"1.1"'); |
+shouldBe('"1.1" || false', '"1.1"'); |
+shouldBe('"0" || true', '"0"'); |
+shouldBe('"0" || false', '"0"'); |
+shouldBe('true || 1.1', 'true'); |
+shouldBe('true || 0', 'true'); |
+shouldBe('false || 1.1', '1.1'); |
+shouldBe('false || 0', '0'); |
+shouldBe('true || "1.1"', 'true'); |
+shouldBe('true || "0"', 'true'); |
+shouldBe('false || "1.1"', '"1.1"'); |
+shouldBe('false || "0"', '"0"'); |
+shouldBe('1.1 || 1.1', '1.1'); |
+shouldBe('1.1 || 0', '1.1'); |
+shouldBe('0 || 1.1', '1.1'); |
+shouldBe('0 || 0', '0'); |
+shouldBe('"1.1" || 1.1', '"1.1"'); |
+shouldBe('"1.1" || 0', '"1.1"'); |
+shouldBe('"0" || 1.1', '"0"'); |
+shouldBe('"0" || 0', '"0"'); |
+shouldBe('1.1 || "1.1"', '1.1'); |
+shouldBe('1.1 || "0"', '1.1'); |
+shouldBe('0 || "1.1"', '"1.1"'); |
+shouldBe('0 || "0"', '"0"'); |
+shouldBe('"1.1" || "1.1"', '"1.1"'); |
+shouldBe('"1.1" || "0"', '"1.1"'); |
+shouldBe('"0" || "1.1"', '"0"'); |
+shouldBe('"0" || "0"', '"0"'); |
+ |
+shouldBe('+3.1', '3.1'); |
+shouldBe('+ +3.1', '3.1'); |
+shouldBe('+"3.1"', '3.1'); |
+shouldBe('+true', '1'); |
+shouldBe('+false', '0'); |
+ |
+shouldBe('-3.1', '-3.1'); |
+shouldBe('- -3.1', '3.1'); |
+shouldBe('-"3.1"', '-3.1'); |
+shouldBe('-true', '-1'); |
+shouldBe('-false', '-0'); |
+ |
+shouldBe('~3', '-4'); |
+shouldBe('~ ~3', '3'); |
+shouldBe('~"3"', '-4'); |
+shouldBe('~true', '-2'); |
+shouldBe('~false', '-1'); |
+ |
+shouldBe('!true', 'false'); |
+shouldBe('!false', 'true'); |
+shouldBe('!3', 'false'); |
+shouldBe('!0', 'true'); |
+ |
+shouldBe('10.3 / 0', 'Infinity'); |
+shouldBe('"10.3" / 0', 'Infinity'); |
+shouldBe('-10.3 / 0', '-Infinity'); |
+shouldBe('"-10.3" / 0', '-Infinity'); |
+shouldBe('true / 0', 'Infinity'); |
+shouldBe('false / 0', 'NaN'); |
+shouldBe('0 / 0', 'NaN'); |
+ |
+shouldBe('10.3 / -0', '-Infinity'); |
+shouldBe('"10.3" / -0', '-Infinity'); |
+shouldBe('-10.3 / -0', 'Infinity'); |
+shouldBe('"-10.3" / -0', 'Infinity'); |
+shouldBe('true / -0', '-Infinity'); |
+shouldBe('false / -0', 'NaN'); |
+shouldBe('0 / -0', 'NaN'); |
+ |
+shouldBe('1 / -0', '-Infinity'); |
+shouldBe('1 / - 0', '-Infinity'); |
+shouldBe('1 / - -0', 'Infinity'); |
+shouldBe('1 / - - -0', '-Infinity'); |