1 /* 2 * The contents of this file are subject to the Netscape Public 3 * License Version 1.1 (the "License"); you may not use this file 4 * except in compliance with the License. You may obtain a copy of 5 * the License at http://www.mozilla.org/NPL/ 6 * 7 * Software distributed under the License is distributed on an "AS IS" 8 * basis, WITHOUT WARRANTY OF ANY KIND, either expressed 9 * or implied. See the License for the specific language governing 10 * rights and limitations under the License. 11 * 12 * The Original Code is mozilla.org code. 13 * 14 * The Initial Developer of the Original Code is Netscape 15 * Communications Corporation. Portions created by Netscape are 16 * Copyright (C) 1998 Netscape Communications Corporation. All 17 * Rights Reserved. 18 * 19 * Contributor(s): pschwartau (at) netscape.com 20 * Date: 14 Mar 2001 21 * 22 * SUMMARY: Testing the internal [[Class]] property of objects 23 * See ECMA-262 Edition 3 13-Oct-1999, Section 8.6.2 24 * 25 * The getJSClass() function we use is in a utility file, e.g. "shell.js". 26 */ 27 //------------------------------------------------------------------------------------------------- 28 var i = 0; 29 var UBound = 0; 30 var bug = '(none)'; 31 var summary = 'Testing the internal [[Class]] property of objects'; 32 var statprefix = 'Current object is: '; 33 var status = ''; var statusList = [ ]; 34 var actual = ''; var actualvalue = [ ]; 35 var expect= ''; var expectedvalue = [ ]; 36 37 38 status = 'the global object'; 39 actual = getJSClass(this); 40 expect = 'global'; 41 addThis(); 42 43 status = 'new Object()'; 44 actual = getJSClass(new Object()); 45 expect = 'Object'; 46 addThis(); 47 48 status = 'new Function()'; 49 actual = getJSClass(new Function()); 50 expect = 'Function'; 51 addThis(); 52 53 status = 'new Array()'; 54 actual = getJSClass(new Array()); 55 expect = 'Array'; 56 addThis(); 57 58 status = 'new String()'; 59 actual = getJSClass(new String()); 60 expect = 'String'; 61 addThis(); 62 63 status = 'new Boolean()'; 64 actual = getJSClass(new Boolean()); 65 expect = 'Boolean'; 66 addThis(); 67 68 status = 'new Number()'; 69 actual = getJSClass(new Number()); 70 expect = 'Number'; 71 addThis(); 72 73 status = 'Math'; 74 actual = getJSClass(Math); // can't use 'new' with the Math object (EMCA3, 15.8) 75 expect = 'Math'; 76 addThis(); 77 78 status = 'new Date()'; 79 actual = getJSClass(new Date()); 80 expect = 'Date'; 81 addThis(); 82 83 status = 'new RegExp()'; 84 actual = getJSClass(new RegExp()); 85 expect = 'RegExp'; 86 addThis(); 87 88 status = 'new Error()'; 89 actual = getJSClass(new Error()); 90 expect = 'Error'; 91 addThis(); 92 93 94 95 //--------------------------------------------------------------------------------- 96 test(); 97 //--------------------------------------------------------------------------------- 98 99 100 101 function addThis() 102 { 103 statusList[UBound] = status; 104 actualvalue[UBound] = actual; 105 expectedvalue[UBound] = expect; 106 UBound++; 107 } 108 109 110 function test() 111 { 112 enterFunc ('test'); 113 printBugNumber (bug); 114 printStatus (summary); 115 116 for (i = 0; i < UBound; i++) 117 { 118 reportCompare(expectedvalue[i], actualvalue[i], getStatus(i)); 119 } 120 121 exitFunc ('test'); 122 } 123 124 125 function getStatus(i) 126 { 127 return statprefix + statusList[i]; 128 } 129