# 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