# 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.

Test some array functions on non-array objects.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS properties(['b', 'a']) is '0:b, 1:a, length:2(DontDelete, DontEnum)'
PASS properties({ length:2, 0:'b', 1:'a' }) is '0:b, 1:a, length:2'
PASS properties(new OneItemConstructor) is '0:a(FromPrototype), length:1(FromPrototype)'
PASS properties(new TwoItemConstructor) is '0:b(FromPrototype), 1:a(FromPrototype), length:2(FromPrototype)'
PASS Array.prototype.toString.call({}) is "[object Object]"
PASS Array.prototype.toString.call(new Date) is "[object Date]"
PASS Array.prototype.toString.call({sort: function() { return 'sort' }}) is "[object Object]"
PASS Array.prototype.toString.call({join: function() { return 'join' }}) is "join"
PASS Array.prototype.toString.call({__proto__: Array.prototype, 0: 'a', 1: 'b', 2: 'c', length: 3}) is "a,b,c"
PASS ({__proto__: Array.prototype, 0: 'a', 1: 'b', 2: 'c', length: 3}).toString() is "a,b,c"
PASS Array.prototype.toString.call({__proto__: Array.prototype, 0: 'a', 1: 'b', 2: 'c', length: 3, join: function() { return 'join' }}) is "join"
PASS ({__proto__: Array.prototype, 0: 'a', 1: 'b', 2: 'c', length: 3, join: function() { return 'join' }}).toString() is "join"
PASS Array.prototype.toString.call(42) is "Number.prototype.join:42"
PASS [0, 1, 2].toString() is "array-join"
FAIL Array.prototype.toLocaleString.call({}) should throw an exception. Was .
PASS Array.prototype.concat.call(x = { length:2, 0:'b', 1:'a' }) is [x]
PASS Array.prototype.join.call({}) is ''
PASS Array.prototype.join.call(['b', 'a']) is 'b,a'
PASS Array.prototype.join.call({ length:2, 0:'b', 1:'a' }) is 'b,a'
PASS Array.prototype.join.call(new TwoItemConstructor) is 'b,a'
PASS Array.prototype.pop.call({}) is undefined
PASS Array.prototype.pop.call({ length:2, 0:'b', 1:'a' }) is 'a'
PASS Array.prototype.pop.call({ length:2, 0:'b', 1:'a' }) is 'a'
PASS Array.prototype.pop.call(new TwoItemConstructor) is 'a'
PASS Array.prototype.pop.call(x = {}); properties(x) is 'length:0'
PASS Array.prototype.pop.call(x = ['b', 'a']); properties(x) is '0:b, length:1(DontDelete, DontEnum)'
PASS Array.prototype.pop.call(x = { length:2, 0:'b', 1:'a' }); properties(x) is '0:b, length:1'
PASS Array.prototype.pop.call(x = new TwoItemConstructor); properties(x) is '0:b(FromPrototype), 1:a(FromPrototype), length:1'
PASS Array.prototype.push.call({}) is 0
PASS Array.prototype.push.call(['b', 'a']) is 2
PASS Array.prototype.push.call({ length:2, 0:'b', 1:'a' }) is 2
PASS Array.prototype.push.call(new TwoItemConstructor) is 2
PASS Array.prototype.push.call(x = {}); properties(x) is 'length:0'
PASS Array.prototype.push.call(x = ['b', 'a']); properties(x) is '0:b, 1:a, length:2(DontDelete, DontEnum)'
PASS Array.prototype.push.call(x = { length:2, 0:'b', 1:'a' }); properties(x) is '0:b, 1:a, length:2'
PASS Array.prototype.push.call(x = new TwoItemConstructor); properties(x) is '0:b(FromPrototype), 1:a(FromPrototype), length:2'
PASS Array.prototype.push.call({}, 'c') is 1
PASS Array.prototype.push.call(['b', 'a'], 'c') is 3
PASS Array.prototype.push.call({ length:2, 0:'b', 1:'a' }, 'c') is 3
PASS Array.prototype.push.call(new TwoItemConstructor, 'c') is 3
PASS Array.prototype.push.call(x = {}, 'c'); properties(x) is '0:c, length:1'
PASS Array.prototype.push.call(x = ['b', 'a'], 'c'); properties(x) is '0:b, 1:a, 2:c, length:3(DontDelete, DontEnum)'
PASS Array.prototype.push.call(x = { length:2, 0:'b', 1:'a' }, 'c'); properties(x) is '0:b, 1:a, 2:c, length:3'
PASS Array.prototype.push.call(x = new TwoItemConstructor, 'c'); properties(x) is '0:b(FromPrototype), 1:a(FromPrototype), 2:c, length:3'
PASS properties(Array.prototype.reverse.call({})) is ''
PASS properties(Array.prototype.reverse.call(['b', 'a'])) is '0:a, 1:b, length:2(DontDelete, DontEnum)'
PASS properties(Array.prototype.reverse.call({ length:2, 0:'b', 1:'a' })) is '0:a, 1:b, length:2'
PASS properties(Array.prototype.reverse.call(new OneItemConstructor)) is '0:a(FromPrototype), length:1(FromPrototype)'
PASS properties(Array.prototype.reverse.call(new TwoItemConstructor)) is '0:a, 1:b, length:2(FromPrototype)'
PASS Array.prototype.shift.call({}) is undefined
PASS Array.prototype.shift.call(['b', 'a']) is 'b'
PASS Array.prototype.shift.call({ length:2, 0:'b', 1:'a' }) is 'b'
PASS Array.prototype.shift.call(new TwoItemConstructor) is 'b'
PASS Array.prototype.shift.call(x = {}); properties(x) is 'length:0'
PASS Array.prototype.shift.call(x = ['b', 'a']); properties(x) is '0:a, length:1(DontDelete, DontEnum)'
PASS Array.prototype.shift.call(x = { length:2, 0:'b', 1:'a' }); properties(x) is '0:a, length:1'
PASS Array.prototype.shift.call(x = new TwoItemConstructor); properties(x) is '0:a, 1:a(FromPrototype), length:1'
PASS Array.prototype.slice.call({}, 0, 1) is []
PASS Array.prototype.slice.call(['b', 'a'], 0, 1) is ['b']
PASS Array.prototype.slice.call({ length:2, 0:'b', 1:'a' }, 0, 1) is ['b']
PASS Array.prototype.slice.call(new TwoItemConstructor, 0, 1) is ['b']
PASS properties(Array.prototype.sort.call({})) is ''
PASS properties(Array.prototype.sort.call(['b', 'a'])) is '0:a, 1:b, length:2(DontDelete, DontEnum)'
PASS properties(Array.prototype.sort.call({ length:2, 0:'b', 1:'a' })) is '0:a, 1:b, length:2'
PASS properties(Array.prototype.sort.call(new OneItemConstructor)) is '0:a(FromPrototype), length:1(FromPrototype)'
PASS properties(Array.prototype.sort.call(new TwoItemConstructor)) is '0:a, 1:b, length:2(FromPrototype)'
PASS Array.prototype.splice.call({}, 0, 1) is []
PASS Array.prototype.splice.call(['b', 'a'], 0, 1) is ['b']
PASS Array.prototype.splice.call({ length:2, 0:'b', 1:'a' }, 0, 1) is ['b']
PASS Array.prototype.splice.call(new TwoItemConstructor, 0, 1) is ['b']
PASS Array.prototype.splice.call(x = {}, 0, 1); properties(x) is 'length:0'
PASS Array.prototype.splice.call(x = ['b', 'a'], 0, 1); properties(x) is '0:a, length:1(DontDelete, DontEnum)'
PASS Array.prototype.splice.call(x = { length:2, 0:'b', 1:'a' }, 0, 1); properties(x) is '0:a, length:1'
PASS Array.prototype.splice.call(x = new TwoItemConstructor, 0, 1); properties(x) is '0:a, 1:a(FromPrototype), length:1'
PASS Array.prototype.unshift.call({}) is 0
PASS Array.prototype.unshift.call(['b', 'a']) is 2
PASS Array.prototype.unshift.call({ length:2, 0:'b', 1:'a' }) is 2
PASS Array.prototype.unshift.call(new TwoItemConstructor) is 2
PASS Array.prototype.unshift.call(x = {}); properties(x) is 'length:0'
PASS Array.prototype.unshift.call(x = ['b', 'a']); properties(x) is '0:b, 1:a, length:2(DontDelete, DontEnum)'
PASS Array.prototype.unshift.call(x = { length:2, 0:'b', 1:'a' }); properties(x) is '0:b, 1:a, length:2'
PASS Array.prototype.unshift.call(x = new TwoItemConstructor); properties(x) is '0:b(FromPrototype), 1:a(FromPrototype), length:2'
PASS Array.prototype.unshift.call({}, 'c') is 1
PASS Array.prototype.unshift.call(['b', 'a'], 'c') is 3
PASS Array.prototype.unshift.call({ length:2, 0:'b', 1:'a' }, 'c') is 3
PASS Array.prototype.unshift.call(new TwoItemConstructor, 'c') is 3
PASS Array.prototype.unshift.call(x = {}, 'c'); properties(x) is '0:c, length:1'
PASS Array.prototype.unshift.call(x = ['b', 'a'], 'c'); properties(x) is '0:c, 1:b, 2:a, length:3(DontDelete, DontEnum)'
PASS Array.prototype.unshift.call(x = { length:2, 0:'b', 1:'a' }, 'c'); properties(x) is '0:c, 1:b, 2:a, length:3'
PASS Array.prototype.unshift.call(x = new TwoItemConstructor, 'c'); properties(x) is '0:c, 1:b, 2:a, length:3'
PASS successfullyParsed is true

TEST COMPLETE

