18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* The contents of this file are subject to the Netscape Public 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* License Version 1.1 (the "License"); you may not use this file 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* except in compliance with the License. You may obtain a copy of 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* the License at http://www.mozilla.org/NPL/ 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Software distributed under the License is distributed on an "AS IS" 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* basis, WITHOUT WARRANTY OF ANY KIND, either expressed 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* or implied. See the License for the specific language governing 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* rights and limitations under the License. 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* The Original Code is mozilla.org code. 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* The Initial Developer of the Original Code is Netscape 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Communications Corporation. Portions created by Netscape are 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Copyright (C) 1998 Netscape Communications Corporation. All 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Rights Reserved. 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Contributor(s): pschwartau@netscape.com 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Date: 14 Mar 2001 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* SUMMARY: Testing the [[Class]] property of native constructors. 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* See ECMA-262 Edition 3 13-Oct-1999, Section 8.6.2 re [[Class]] property. 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Same as class-001.js - but testing the constructors here, not object instances. 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Therefore we expect the [[Class]] property to equal 'Function' in each case. 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* The getJSClass() function we use is in a utility file, e.g. "shell.js" 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project//------------------------------------------------------------------------------------------------- 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar i = 0; 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar UBound = 0; 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar bug = '(none)'; 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar summary = 'Testing the internal [[Class]] property of native constructors'; 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar statprefix = 'Current constructor is: '; 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar status = ''; var statusList = [ ]; 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar actual = ''; var actualvalue = [ ]; 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar expect= ''; var expectedvalue = [ ]; 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * We set the expect variable each time only for readability. 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * We expect 'Function' every time; see discussion above - 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = 'Object'; 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = getJSClass(Object); 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 'Function'; 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis(); 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = 'Function'; 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = getJSClass(Function); 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 'Function'; 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis(); 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = 'Array'; 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = getJSClass(Array); 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 'Function'; 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis(); 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = 'String'; 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = getJSClass(String); 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 'Function'; 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis(); 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = 'Boolean'; 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = getJSClass(Boolean); 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 'Function'; 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis(); 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = 'Number'; 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = getJSClass(Number); 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 'Function'; 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis(); 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = 'Date'; 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = getJSClass(Date); 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 'Function'; 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis(); 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = 'RegExp'; 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = getJSClass(RegExp); 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 'Function'; 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis(); 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = 'Error'; 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = getJSClass(Error); 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 'Function'; 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis(); 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project//--------------------------------------------------------------------------------- 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttest(); 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project//--------------------------------------------------------------------------------- 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction addThis() 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project statusList[UBound] = status; 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actualvalue[UBound] = actual; 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expectedvalue[UBound] = expect; 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project UBound++; 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction test() 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project enterFunc ('test'); 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project printBugNumber (bug); 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project printStatus (summary); 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (i = 0; i < UBound; i++) 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expectedvalue[i], actualvalue[i], getStatus(i)); 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project exitFunc ('test'); 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction getStatus(i) 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return statprefix + statusList[i]; 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 125