11510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Copyright 2013 the V8 project authors. All rights reserved. 21510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 31510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// 41510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Redistribution and use in source and binary forms, with or without 51510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// modification, are permitted provided that the following conditions 61510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// are met: 71510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// 1. Redistributions of source code must retain the above copyright 81510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// notice, this list of conditions and the following disclaimer. 91510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// 2. Redistributions in binary form must reproduce the above copyright 101510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// notice, this list of conditions and the following disclaimer in the 111510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// documentation and/or other materials provided with the distribution. 121510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// 131510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY 141510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 151510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 161510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY 171510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 181510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 191510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 201510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 211510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 221510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 231510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 241510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgdescription( 251510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org"This tests if the Date setters handle invalid parameters correctly resulting in a NaN date and if a recovery from such a NaN date is only possible by using the date.setTime() and date.set[[UTC]Full]Year() functions." 261510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org); 271510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 281510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar dateFunctionNameRoots = [ 291510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org "Time", 301510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org "Milliseconds", 311510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org "UTCMilliseconds", 321510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org "Seconds", 331510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org "UTCSeconds", 341510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org "Minutes", 351510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org "UTCMinutes", 361510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org "Hours", 371510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org "UTCHours", 381510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org "Date", 391510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org "UTCDate", 401510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org "Month", 411510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org "UTCMonth", 421510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org "FullYear", 431510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org "UTCFullYear", 441510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org "Year" 451510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org]; 461510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 471510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar dateFunctionParameterNum = [ 481510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1, 491510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1, 501510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1, 511510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2, 521510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2, 531510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 3, 541510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 3, 551510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 4, 561510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 4, 571510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1, 581510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1, 591510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2, 601510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2, 611510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 3, 621510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 3, 631510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1 641510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org]; 651510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 661510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar testValues = [ 671510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 0, 681510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org Number.NaN, 691510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org Number.POSITIVE_INFINITY, 701510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org Number.NEGATIVE_INFINITY 711510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org]; 721510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 731510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction testDateFunctionWithValueNoRecoverNaN(functionNameRoot, steps) 741510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org{ 751510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var date = new Date(); 761510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var setValue = date["get" + functionNameRoot](); 771510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org date.setMilliseconds(Number.NaN); 781510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var params = [ 791510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org "", 801510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org ", 0", 811510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org ", 0, 0", 821510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org ", 0, 0, 0" 831510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org ]; 841510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var setResult = (1 == steps) ? date["set" + functionNameRoot](setValue) 851510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org : ((2 == steps) ? date["set" + functionNameRoot](setValue, 0) 861510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org : ((3 == steps) ? date["set" + functionNameRoot](setValue, 0, 0) 871510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org : date["set" + functionNameRoot](setValue, 0, 0, 0))); 881510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (!isNaN(setResult)) { 891510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date(NaN).set" + functionNameRoot + "(" + setValue + params[steps - 1] 901510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + ") was " + setResult + " instead of NaN"); 911510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org return false; 921510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 931510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var getResult = date["get" + functionNameRoot](); 941510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (!isNaN(getResult)) { 951510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.get" + functionNameRoot + "() was " + getResult + " instead of NaN"); 961510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org return false; 971510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 981510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testPassed ("no recovering from NaN date using date.set" + functionNameRoot 991510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + "(arg0" + params[steps - 1] + ")"); 1001510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org return true; 1011510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 1021510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1031510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction testDateFunctionWithValueRecoverTime(functionNameRoot) 1041510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org{ 1051510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var date = new Date(); 1061510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var setValue = date["get" + functionNameRoot](); 1071510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org date.setMilliseconds(Number.NaN); 1081510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var setResult = date["set" + functionNameRoot](setValue); 1091510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (setValue != setResult) { 1101510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date(NaN).set" + functionNameRoot + "(" + setValue + ") was " + setResult + " instead of " + setValue); 1111510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org return false; 1121510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 1131510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var getResult = date["get" + functionNameRoot](); 1141510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != setValue) { 1151510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.get" + functionNameRoot + "() was " + getResult + " instead of " + setValue); 1161510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org return false; 1171510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 1181510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testPassed ("recover from NaN date using date.set" + functionNameRoot + "()"); 1191510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org return true; 1201510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 1211510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1221510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction testDateFunctionWithValueRecoverFullYear(functionNameRoot) 1231510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org{ 1241510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var result = true; 1251510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var date = new Date(); 1261510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var setValue = date["get" + functionNameRoot](); 1271510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org date.setMilliseconds(Number.NaN); 1281510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var setResult = date["set" + functionNameRoot](setValue); 1291510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var getResult = date["get" + functionNameRoot](); 1301510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != setValue) { 1311510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.get" + functionNameRoot + "() was " + getResult + " instead of " + setValue); 1321510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 1331510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 1341510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org getResult = date.getMilliseconds(); 1351510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != 0) { 1361510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.getMilliseconds() was " + getResult + " instead of 0"); 1371510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 1381510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 1391510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org getResult = date.getSeconds(); 1401510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != 0) { 1411510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.getSeconds() was " + getResult + " instead of 0"); 1421510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 1431510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 1441510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org getResult = date.getMinutes(); 1451510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != 0) { 1461510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.getMinutes() was " + getResult + " instead of 0"); 1471510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 1481510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 1491510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org getResult = date.getHours(); 1501510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != 0) { 1511510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.getHours() was " + getResult + " instead of 0"); 1521510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 1531510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 1541510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org getResult = date.getDate(); 1551510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != 1) { 1561510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.getDate() was " + getResult + " instead of 1"); 1571510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 1581510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 1591510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org getResult = date.getMonth(); 1601510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != 0) { 1611510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.getMonth() was " + getResult + " instead of 0"); 1621510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 1631510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 1641510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (result) 1651510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testPassed ("recover from NaN date using date.setFullYear()"); 1661510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org else 1671510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed ("recover from NaN date using date.setFullYear()"); 1681510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org return result; 1691510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 1701510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1711510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction testDateFunctionWithValueRecoverUTCFullYear(functionNameRoot) 1721510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org{ 1731510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var result = true; 1741510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var date = new Date(); 1751510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var setValue = date["get" + functionNameRoot](); 1761510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org date.setMilliseconds(Number.NaN); 1771510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var setResult = date["set" + functionNameRoot](setValue); 1781510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var getResult = date["get" + functionNameRoot](); 1791510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != setValue) { 1801510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.get" + functionNameRoot + "() was " + getResult + " instead of " + setValue); 1811510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 1821510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 1831510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org getResult = date.getUTCMilliseconds(); 1841510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != 0) { 1851510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.getUTCMilliseconds() was " + getResult + " instead of 0"); 1861510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 1871510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 1881510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org getResult = date.getUTCSeconds(); 1891510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != 0) { 1901510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.getUTCSeconds() was " + getResult + " instead of 0"); 1911510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 1921510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 1931510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org getResult = date.getUTCMinutes(); 1941510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != 0) { 1951510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.getUTCMinutes() was " + getResult + " instead of 0"); 1961510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 1971510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 1981510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org getResult = date.getUTCHours(); 1991510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != 0) { 2001510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.getUTCHours() was " + getResult + " instead of 0"); 2011510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 2021510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 2031510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org getResult = date.getUTCDate(); 2041510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != 1) { 2051510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.getUTCDate() was " + getResult + " instead of 1"); 2061510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 2071510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 2081510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org getResult = date.getUTCMonth(); 2091510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != 0) { 2101510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.getUTCMonth() was " + getResult + " instead of 0"); 2111510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 2121510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 2131510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (result) 2141510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testPassed ("recover from NaN date using date.setUTCFullYear()"); 2151510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org else 2161510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed ("recover from NaN date using date.setUTCFullYear()"); 2171510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org return result; 2181510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 2191510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2201510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction testDateFunctionWithValueRecoverYear(functionNameRoot) 2211510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org{ 2221510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var result = true; 2231510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var is13Compatible = true; 2241510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2251510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var date = new Date(); 2261510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var setValue = date["get" + functionNameRoot](); 2271510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var fullYears = date.getFullYear() - 1900; 2281510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (setValue != fullYears) { 2291510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.get" + functionNameRoot + "() was " + setValue + " instead of " + fullYears); 2301510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org is13Compatible = false; 2311510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } else 2321510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testPassed("date.getYear() is compatible to JavaScript 1.3 and later"); 2331510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2341510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org date.setMilliseconds(Number.NaN); 2351510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var setResult = date["set" + functionNameRoot](setValue + 1900); 2361510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var getResult = date["get" + functionNameRoot](); 2371510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != setValue) { 2381510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.get" + functionNameRoot + "() was " + getResult + " instead of " + setValue); 2391510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 2401510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 2411510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org getResult = date.getMilliseconds(); 2421510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != 0) { 2431510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.getMilliseconds() was " + getResult + " instead of 0"); 2441510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 2451510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 2461510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org getResult = date.getSeconds(); 2471510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != 0) { 2481510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.getSeconds() was " + getResult + " instead of 0"); 2491510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 2501510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 2511510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org getResult = date.getMinutes(); 2521510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != 0) { 2531510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.getMinutes() was " + getResult + " instead of 0"); 2541510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 2551510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 2561510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org getResult = date.getHours(); 2571510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != 0) { 2581510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.getHours() was " + getResult + " instead of 0"); 2591510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 2601510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 2611510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org getResult = date.getDate(); 2621510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != 1) { 2631510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.getDate() was " + getResult + " instead of 1"); 2641510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 2651510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 2661510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org getResult = date.getMonth(); 2671510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (getResult != 0) { 2681510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.getMonth() was " + getResult + " instead of 0"); 2691510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 2701510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 2711510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (result) 2721510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testPassed ("recover from NaN date using date.setUTCFullYear()"); 2731510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org else 2741510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed ("recover from NaN date using date.setUTCFullYear()"); 2751510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org return result && is13Compatible; 2761510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 2771510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2781510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction makeIEHappy(functionNameRoot, value) 2791510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org{ 2801510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var date = new Date(); 2811510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var setResult = date["set" + functionNameRoot](value); 2821510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (!isNaN(setResult)) { 2831510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.set" + functionNameRoot 2841510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + "() was " 2851510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + setResult + " instead of NaN"); 2861510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org return false; 2871510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 2881510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var getResult = date["get" + functionNameRoot](); 2891510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (!isNaN(getResult)) { 2901510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.get" + functionNameRoot + "() was " 2911510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + getResult + " instead of NaN"); 2921510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org return false; 2931510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 2941510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org return true 2951510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 2961510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2971510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction testDateFunctionWithValueExpectingNaN1(functionNameRoot) 2981510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org{ 2991510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var result = true; 3001510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org for (var idx0 in testValues) 3011510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (idx0 != 0) { 3021510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var date = new Date(); 3031510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var setResult = date["set" + functionNameRoot](testValues[idx0]); 3041510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (!isNaN(setResult)) { 3051510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.set" + functionNameRoot + "(" 3061510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + testValues[idx0] + ") was " 3071510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + setResult + " instead of NaN"); 3081510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 3091510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 3101510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var getResult = date["get" + functionNameRoot](); 3111510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (!isNaN(getResult)) { 3121510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.get" + functionNameRoot + "() was " 3131510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + getResult + " instead of NaN"); 3141510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 3151510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 3161510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } else if (!makeIEHappy(functionNameRoot)) 3171510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 3181510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (result) { 3191510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testPassed("date.set" + functionNameRoot + "(arg0)"); 3201510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testPassed("date.set" + functionNameRoot + "()"); 3211510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 3221510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org return result; 3231510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 3241510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 3251510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction testDateFunctionWithValueExpectingNaN2(functionNameRoot) 3261510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org{ 3271510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var result = true; 3281510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org for (var idx0 in testValues) 3291510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org for (var idx1 in testValues) 3301510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (idx0 != 0 || idx1 != 0) { 3311510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var date = new Date(); 3321510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var setResult = date["set" + functionNameRoot](testValues[idx0], 3331510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testValues[idx1]); 3341510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 3351510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (!isNaN(setResult)) { 3361510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.set" + functionNameRoot + "(" 3371510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + testValues[idx0] + ", " 3381510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + testValues[idx1] + ") was " 3391510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + setResult + " instead of NaN"); 3401510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 3411510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 3421510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var getResult = date["get" + functionNameRoot](); 3431510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (!isNaN(getResult)) { 3441510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.get" + functionNameRoot + "() was " 3451510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + getResult + " instead of NaN"); 3461510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 3471510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 3481510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 3491510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 3501510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (result) 3511510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testPassed("date.set" + functionNameRoot + "(arg0, arg1)"); 3521510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org return result; 3531510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 3541510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 3551510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction testDateFunctionWithValueExpectingNaN3(functionNameRoot) 3561510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org{ 3571510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var result = true; 3581510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org for (var idx0 in testValues) 3591510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org for (var idx1 in testValues) 3601510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org for (var idx2 in testValues) 3611510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (idx0 != 0 || idx1 != 0 || idx2 != 0) { 3621510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var date = new Date(); 3631510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var setResult = date["set" + functionNameRoot](testValues[idx0], 3641510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testValues[idx1], 3651510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testValues[idx2]); 3661510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (!isNaN(setResult)) { 3671510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.set" + functionNameRoot + "(" 3681510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + testValues[idx0] + ", " 3691510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + testValues[idx1] + ", " 3701510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + testValues[idx2] + ") was " 3711510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + setResult + " instead of NaN"); 3721510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 3731510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 3741510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var getResult = date["get" + functionNameRoot](); 3751510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (!isNaN(getResult)) { 3761510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.get" + functionNameRoot + "() was " 3771510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + getResult + " instead of NaN"); 3781510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 3791510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 3801510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 3811510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 3821510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (result) 3831510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testPassed("date.set" + functionNameRoot + "(arg0, arg1, arg2)"); 3841510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org return result; 3851510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 3861510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 3871510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction testDateFunctionWithValueExpectingNaN4(functionNameRoot) 3881510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org{ 3891510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var result = true; 3901510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org for (var idx0 in testValues) 3911510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org for (var idx1 in testValues) 3921510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org for (var idx2 in testValues) 3931510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org for (var idx3 in testValues) 3941510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (idx0 != 0 || idx1 != 0 || idx2 != 0 || idx3 != 0) { 3951510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var date = new Date(); 3961510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var setResult = date["set" + functionNameRoot](testValues[idx0], 3971510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testValues[idx1], 3981510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testValues[idx2], 3991510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testValues[idx3]); 4001510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (!isNaN(setResult)) { 4011510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.set" + functionNameRoot + "(" 4021510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + testValues[idx0] + ", " 4031510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + testValues[idx1] + ", " 4041510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + testValues[idx2] + ", " 4051510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + testValues[idx3] + ") was " 4061510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + setResult + " instead of NaN"); 4071510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 4081510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 4091510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var getResult = date["get" + functionNameRoot](); 4101510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (!isNaN(getResult)) { 4111510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFailed("date.get" + functionNameRoot + "() was " 4121510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org + getResult + " instead of NaN"); 4131510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org result = false; 4141510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 4151510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 4161510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (result) 4171510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testPassed("date.set" + functionNameRoot + "(arg0, arg1, arg2, arg3)"); 4181510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org return result; 4191510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 4201510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 4211510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 4221510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 4231510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction testDateFunction(functionNameRoot, functionParamNum) 4241510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org{ 4251510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var success = true; 4261510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 4271510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org switch (functionParamNum) { 4281510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org case 4: 4291510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org success &= testDateFunctionWithValueExpectingNaN4(functionNameRoot); 4301510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (functionNameRoot != "Time" && 4311510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org functionNameRoot != "FullYear" && 4321510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org functionNameRoot != "UTCFullYear" && 4331510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org functionNameRoot != "Year") 4341510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org success &= testDateFunctionWithValueNoRecoverNaN(functionNameRoot, 4); 4351510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 4361510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org case 3: 4371510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org success &= testDateFunctionWithValueExpectingNaN3(functionNameRoot); 4381510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (functionNameRoot != "Time" && 4391510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org functionNameRoot != "FullYear" && 4401510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org functionNameRoot != "UTCFullYear" && 4411510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org functionNameRoot != "Year") 4421510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org success &= testDateFunctionWithValueNoRecoverNaN(functionNameRoot, 3); 4431510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 4441510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org case 2: 4451510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org success &= testDateFunctionWithValueExpectingNaN2(functionNameRoot); 4461510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (functionNameRoot != "Time" && 4471510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org functionNameRoot != "FullYear" && 4481510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org functionNameRoot != "UTCFullYear" && 4491510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org functionNameRoot != "Year") 4501510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org success &= testDateFunctionWithValueNoRecoverNaN(functionNameRoot, 2); 4511510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 4521510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org case 1: 4531510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org success &= testDateFunctionWithValueExpectingNaN1(functionNameRoot); 4541510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (functionNameRoot == "Time") 4551510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org success &= testDateFunctionWithValueRecoverTime(functionNameRoot); 4561510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org else if (functionNameRoot == "FullYear") 4571510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org success &= testDateFunctionWithValueRecoverFullYear(functionNameRoot); 4581510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org else if (functionNameRoot == "UTCFullYear") 4591510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org success &= testDateFunctionWithValueRecoverUTCFullYear(functionNameRoot); 4601510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org else if (functionNameRoot == "Year") 4611510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org success &= testDateFunctionWithValueRecoverYear(functionNameRoot); 4621510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org else 4631510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org success &= testDateFunctionWithValueNoRecoverNaN(functionNameRoot, 1); 4641510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 4651510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 4661510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (success) 4671510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testPassed("date.set" + functionNameRoot + " passed all tests"); 4681510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 4691510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 4701510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfor (var x in dateFunctionNameRoots) 4711510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org{ 4721510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testDateFunction(dateFunctionNameRoots[x], dateFunctionParameterNum[x]); 4731510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 474