# 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. KDE JS Test On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". PASS !undefined is true PASS !null is true PASS !!true is true PASS !false is true PASS !!1 is true PASS !0 is true PASS !!'a' is true PASS !'' is true PASS nonSpeculativeNot(undefined) is true PASS nonSpeculativeNot(null) is true PASS nonSpeculativeNot(!true) is true PASS nonSpeculativeNot(false) is true PASS nonSpeculativeNot(!1) is true PASS nonSpeculativeNot(0) is true PASS nonSpeculativeNot(!'a') is true PASS nonSpeculativeNot('') is true PASS +9 is 9 PASS var i = 10; +i is 10 PASS -11 is -11 PASS var i = 12; -i is -12 PASS var i = 0; ++i; is 1 PASS var i = 0; ++i; i is 1 PASS var i = 0; i++; is 0 PASS var i = 0; i++; i is 1 PASS var i = true; i++ is 1 PASS var i = true; i++; i is 2 PASS var i = 0; --i; is -1 PASS var i = 0; --i; i is -1 PASS var i = 0; i--; is 0 PASS var i = 0; i--; i is -1 PASS var i = true; i-- is 1 PASS var i = true; i--; i is 0 PASS ~0 is -1 PASS ~1 is -2 PASS ~NaN is -1 PASS ~Infinity is -1 PASS ~Math.pow(2, 33) is -1 PASS ~(Math.pow(2, 32) + Math.pow(2, 31) + 2) is 2147483645 PASS ~null is -1 PASS 3 & 1 is 1 PASS 2 | true is 3 PASS '3' ^ 1 is 2 PASS 3^4&5 is 7 PASS 2|4^5 is 3 PASS 1 << 2 is 4 PASS 8 >> 1 is 4 PASS 1 >> 2 is 0 PASS -8 >> 24 is -1 PASS 8 >>> 2 is 2 PASS -8 >>> 24 is 255 PASS (-2200000000 >> 1) << 1 is 2094967296 PASS Infinity >> 1 is 0 PASS Infinity << 1 is 0 PASS Infinity >>> 1 is 0 PASS NaN >> 1 is 0 PASS NaN << 1 is 0 PASS NaN >>> 1 is 0 PASS 8.1 >> 1 is 4 PASS 8.1 << 1 is 16 PASS 8.1 >>> 1 is 4 PASS 8.9 >> 1 is 4 PASS 8.9 << 1 is 16 PASS 8.9 >>> 1 is 4 PASS Math.pow(2, 32) >> 1 is 0 PASS Math.pow(2, 32) << 1 is 0 PASS Math.pow(2, 32) >>> 1 is 0 PASS 1 << two is 4 PASS 8 >> one is 4 PASS 1 >> two is 0 PASS -8 >> twentyFour is -1 PASS 8 >>> two is 2 PASS -8 >>> twentyFour is 255 PASS (-2200000000 >> one) << one is 2094967296 PASS Infinity >> one is 0 PASS Infinity << one is 0 PASS Infinity >>> one is 0 PASS NaN >> one is 0 PASS NaN << one is 0 PASS NaN >>> one is 0 PASS 888.1 >> one is 444 PASS 888.1 << one is 1776 PASS 888.1 >>> one is 444 PASS 888.9 >> one is 444 PASS 888.9 << one is 1776 PASS 888.9 >>> one is 444 PASS Math.pow(2, 32) >> one is 0 PASS Math.pow(2, 32) << one is 0 PASS Math.pow(2, 32) >>> one is 0 PASS 1+2 is 3 PASS 'a'+'b' is 'ab' PASS 'a'+2 is 'a2' PASS '2'+'-1' is '2-1' PASS true+'a' is 'truea' PASS 'a' + null is 'anull' PASS true+1 is 2 PASS false+null is 0 PASS 1-3 is -2 PASS isNaN('a'-3) is true PASS '3'-'-1' is 4 PASS '4'-2 is 2 PASS true-false is 1 PASS false-1 is -1 PASS null-true is -1 PASS 2 * 3 is 6 PASS true * 3 is 3 PASS 2 * '3' is 6 PASS 6 / 4 is 1.5 PASS '6' / '2' is 3 PASS isNaN('x' / 1) is true PASS isNaN(1 / NaN) is true PASS isNaN(Infinity / Infinity) is true PASS Infinity / 0 is Infinity PASS -Infinity / 0 is -Infinity PASS Infinity / 1 is Infinity PASS -Infinity / 1 is -Infinity PASS 1 / Infinity == +0 is true PASS 1 / -Infinity == -0 is true PASS isNaN(0/0) is true PASS 0 / 1 === 0 is true PASS 0 / -1 === -0 is true PASS 1 / 0 is Infinity PASS -1 / 0 is -Infinity PASS 6 % 4 is 2 PASS '-6' % 4 is -2 PASS 2==2 is true PASS 1==2 is false PASS nonSpeculativeEqual(2,2) is true PASS nonSpeculativeEqual(1,2) is false PASS 1<2 is true PASS 1<=2 is true PASS 2<1 is false PASS 2<=1 is false PASS nonSpeculativeLess(1,2) is true PASS nonSpeculativeLessEq(1,2) is true PASS nonSpeculativeLess(2,1) is false PASS nonSpeculativeLessEq(2,1) is false PASS 2>1 is true PASS 2>=1 is true PASS 1>=2 is false PASS 1>2 is false PASS nonSpeculativeGreater(2,1) is true PASS nonSpeculativeGreaterEq(2,1) is true PASS nonSpeculativeGreaterEq(1,2) is false PASS nonSpeculativeGreater(1,2) is false PASS 'abc' == 'abc' is true PASS 'abc' != 'xyz' is true PASS true == true is true PASS false == false is true PASS true != false is true PASS 'a' != null is true PASS 'a' != undefined is true PASS null == null is true PASS null == undefined is true PASS undefined == undefined is true PASS NaN != NaN is true PASS true != undefined is true PASS true != null is true PASS false != undefined is true PASS false != null is true PASS '0' == 0 is true PASS 1 == '1' is true PASS NaN != NaN is true PASS NaN != 0 is true PASS NaN != undefined is true PASS true == 1 is true PASS true != 2 is true PASS 1 == true is true PASS false == 0 is true PASS 0 == false is true PASS nonSpeculativeEqual('abc', 'abc') is true PASS nonSpeculativeNotEqual('abc', 'xyz') is true PASS nonSpeculativeEqual(true, true) is true PASS nonSpeculativeEqual(false, false) is true PASS nonSpeculativeNotEqual(true, false) is true PASS nonSpeculativeNotEqual('a', null) is true PASS nonSpeculativeNotEqual('a', undefined) is true PASS nonSpeculativeEqual(null, null) is true PASS nonSpeculativeEqual(null, undefined) is true PASS nonSpeculativeEqual(undefined, undefined) is true PASS nonSpeculativeNotEqual(NaN, NaN) is true PASS nonSpeculativeNotEqual(true, undefined) is true PASS nonSpeculativeNotEqual(true, null) is true PASS nonSpeculativeNotEqual(false, undefined) is true PASS nonSpeculativeNotEqual(false, null) is true PASS nonSpeculativeEqual('0', 0) is true PASS nonSpeculativeEqual(1, '1') is true PASS nonSpeculativeNotEqual(NaN, NaN) is true PASS nonSpeculativeNotEqual(NaN, 0) is true PASS nonSpeculativeNotEqual(NaN, undefined) is true PASS nonSpeculativeEqual(true, 1) is true PASS nonSpeculativeNotEqual(true, 2) is true PASS nonSpeculativeEqual(1, true) is true PASS nonSpeculativeEqual(false, 0) is true PASS nonSpeculativeEqual(0, false) is true PASS 'abc' < 'abx' is true PASS 'abc' < 'abcd' is true PASS 'abc' < 'abc' is false PASS 'abcd' < 'abcd' is false PASS 'abx' < 'abc' is false PASS nonSpeculativeLess('abc', 'abx') is true PASS nonSpeculativeLess('abc', 'abcd') is true PASS nonSpeculativeLess('abc', 'abc') is false PASS nonSpeculativeLess('abcd', 'abcd') is false PASS nonSpeculativeLess('abx', 'abc') is false PASS 'abc' <= 'abc' is true PASS 'abc' <= 'abx' is true PASS 'abx' <= 'abc' is false PASS 'abcd' <= 'abc' is false PASS 'abc' <= 'abcd' is true PASS nonSpeculativeLessEq('abc', 'abc') is true PASS nonSpeculativeLessEq('abc', 'abx') is true PASS nonSpeculativeLessEq('abx', 'abc') is false PASS nonSpeculativeLessEq('abcd', 'abc') is false PASS nonSpeculativeLessEq('abc', 'abcd') is true PASS 'abc' > 'abx' is false PASS 'abc' > 'abc' is false PASS 'abcd' > 'abc' is true PASS 'abx' > 'abc' is true PASS 'abc' > 'abcd' is false PASS nonSpeculativeGreater('abc', 'abx') is false PASS nonSpeculativeGreater('abc', 'abc') is false PASS nonSpeculativeGreater('abcd', 'abc') is true PASS nonSpeculativeGreater('abx', 'abc') is true PASS nonSpeculativeGreater('abc', 'abcd') is false PASS 'abc' >= 'abc' is true PASS 'abcd' >= 'abc' is true PASS 'abx' >= 'abc' is true PASS 'abc' >= 'abx' is false PASS 'abc' >= 'abx' is false PASS 'abc' >= 'abcd' is false PASS nonSpeculativeGreaterEq('abc', 'abc') is true PASS nonSpeculativeGreaterEq('abcd', 'abc') is true PASS nonSpeculativeGreaterEq('abx', 'abc') is true PASS nonSpeculativeGreaterEq('abc', 'abx') is false PASS nonSpeculativeGreaterEq('abc', 'abx') is false PASS nonSpeculativeGreaterEq('abc', 'abcd') is false PASS 'abc' <= 0 is false PASS '' <= 0 is true PASS ' ' <= 0 is true PASS null <= 0 is true PASS 0 <= 'abc' is false PASS 0 <= '' is true PASS 0 <= null is true PASS null <= null is true PASS 6 < '52' is true PASS 6 < '72' is true PASS NaN < 0 is false PASS NaN <= 0 is false PASS NaN > 0 is false PASS NaN >= 0 is false PASS nonSpeculativeLessEq('abc', 0) is false PASS nonSpeculativeLessEq('', 0) is true PASS nonSpeculativeLessEq(' ', 0) is true PASS nonSpeculativeLessEq(null, 0) is true PASS nonSpeculativeLessEq(0, 'abc') is false PASS nonSpeculativeLessEq(0, '') is true PASS nonSpeculativeLessEq(0, null) is true PASS nonSpeculativeLessEq(null, null) is true PASS nonSpeculativeLess(6, '52') is true PASS nonSpeculativeLess(6, '72') is true PASS nonSpeculativeLess(NaN, 0) is false PASS nonSpeculativeLessEq(NaN, 0) is false PASS nonSpeculativeGreater(NaN, 0) is false PASS nonSpeculativeGreaterEq(NaN, 0) is false PASS 0 === false is false PASS null === null is true PASS NaN === NaN is false PASS 0.0 === 0 is true PASS 'abc' === 'abc' is true PASS 'a' === 'x' is false PASS 1 === '1' is false PASS '1' === 1 is false PASS true === true is true PASS false === false is true PASS true === false is false PASS Math === Math is true PASS Math === Boolean is false PASS Infinity === Infinity is true PASS nonSpeculativeStrictEqual(0, false) is false PASS nonSpeculativeStrictEqual(null, null) is true PASS nonSpeculativeStrictEqual(NaN, NaN) is false PASS nonSpeculativeStrictEqual(0.0, 0) is true PASS nonSpeculativeStrictEqual('abc', 'abc') is true PASS nonSpeculativeStrictEqual('a', 'x') is false PASS nonSpeculativeStrictEqual(1, '1') is false PASS nonSpeculativeStrictEqual('1', 1) is false PASS nonSpeculativeStrictEqual(true, true) is true PASS nonSpeculativeStrictEqual(false, false) is true PASS nonSpeculativeStrictEqual(true, false) is false PASS nonSpeculativeStrictEqual(Math, Math) is true PASS nonSpeculativeStrictEqual(Math, Boolean) is false PASS nonSpeculativeStrictEqual(Infinity, Infinity) is true PASS 0 !== 0 is false PASS 0 !== 1 is true PASS nonSpeculativeStrictNotEqual(0, 0) is false PASS nonSpeculativeStrictNotEqual(0, 1) is true PASS typeof undefined is 'undefined' PASS typeof null is 'object' PASS typeof true is 'boolean' PASS typeof false is 'boolean' PASS typeof 1 is 'number' PASS typeof 'a' is 'string' PASS typeof shouldBe is 'function' PASS typeof Number.NaN is 'number' PASS 11 && 22 is 22 PASS null && true is null PASS 11 || 22 is 11 PASS null || 'a' is 'a' PASS void 1 is undefined. PASS 1 in [1, 2] is true PASS 3 in [1, 2] is false PASS 'a' in { a:1, b:2 } is true PASS (new Boolean()) instanceof Boolean is true PASS (new Boolean()) instanceof Number is false PASS successfullyParsed is true TEST COMPLETE