1d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// Copyright 2013 the V8 project authors. All rights reserved. 2d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 3d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// 4d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// Redistribution and use in source and binary forms, with or without 5d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// modification, are permitted provided that the following conditions 6d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// are met: 7d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// 1. Redistributions of source code must retain the above copyright 8d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// notice, this list of conditions and the following disclaimer. 9d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// 2. Redistributions in binary form must reproduce the above copyright 10d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// notice, this list of conditions and the following disclaimer in the 11d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// documentation and/or other materials provided with the distribution. 12d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// 13d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY 14d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 15d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 16d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY 17d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 18d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 19d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 20d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 22d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org 24d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgdescription("KDE JS Test"); 25d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org// We can't use normal shouldBe here, since they'd eval in the wrong context... 26d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org 27d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgfunction shouldBeOfType(msg, val, type) { 28d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org if (typeof(val) != type) 29d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org testFailed(msg + ": value has type " + typeof(val) + " , not:" + type); 30d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org else 31d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org testPassed(msg); 32d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org} 33d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org 34d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgfunction test0() { 35d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org var arguments; 36d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org // var execution should not overwrite something that was 37d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org // in scope beforehand -- e.g. the arguments thing 38d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org shouldBeOfType("test0", arguments, 'object'); 39d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org } 40d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org 41d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgfunction test1() { 42d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org // No need to undef-initialize something in scope already! 43d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org shouldBeOfType("test1", arguments, 'object'); 44d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org var arguments; 45d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org} 46d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org 47d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgfunction test2(arguments) { 48d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org // Formals OTOH can overwrite the args object 49d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org shouldBeOfType("test2", arguments, 'number'); 50d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org} 51d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org 52d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org 53d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgfunction test3() { 54d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org // Ditto for functions.. 55d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org shouldBeOfType("test3", arguments, 'function'); 56d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org function arguments() {} 57d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org} 58d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org 59d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgfunction test4() { 60d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org // Here, the -declaration- part of the var below should have no 61d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org // effect.. 62d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org shouldBeOfType('test4.(1)', arguments, 'object'); 63d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org var arguments = 4; 64d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org // .. but the assignment shoud just happen 65d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org shouldBeOfType('test4.(2)', arguments, 'number'); 66d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org} 67d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org 68d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.org 69d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgtest0(); 70d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgtest1(); 71d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgtest2(42); 72d3c42109e5b85232d19beab8deeb24bdcbbf07f9danno@chromium.orgtest3(); 73f9841897146bc10dbb3c45f0632bb79254602c75machenbach@chromium.orgtest4(); 74