Home | History | Annotate | Download | only in Object
      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