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 [[Class]] property of native constructors.
     23 * See ECMA-262 Edition 3 13-Oct-1999, Section 8.6.2 re [[Class]] property.
     24 *
     25 * Same as class-001.js - but testing the constructors here, not object instances.
     26 * Therefore we expect the [[Class]] property to equal 'Function' in each case.
     27 *
     28 * The getJSClass() function we use is in a utility file, e.g. "shell.js"
     29 */
     30 //-------------------------------------------------------------------------------------------------
     31 var i = 0;
     32 var UBound = 0;
     33 var bug = '(none)';
     34 var summary = 'Testing the internal [[Class]] property of native constructors';
     35 var statprefix = 'Current constructor is: ';
     36 var status = ''; var statusList = [ ];
     37 var actual = ''; var actualvalue = [ ];
     38 var expect= ''; var expectedvalue = [ ];
     39 
     40 /*
     41  * We set the expect variable each time only for readability.
     42  * We expect 'Function' every time; see discussion above -
     43  */
     44 status = 'Object';
     45 actual = getJSClass(Object);
     46 expect = 'Function';
     47 addThis();
     48 
     49 status = 'Function';
     50 actual = getJSClass(Function);
     51 expect = 'Function';
     52 addThis();
     53 
     54 status = 'Array';
     55 actual = getJSClass(Array);
     56 expect = 'Function';
     57 addThis();
     58 
     59 status = 'String';
     60 actual = getJSClass(String);
     61 expect = 'Function';
     62 addThis();
     63 
     64 status = 'Boolean';
     65 actual = getJSClass(Boolean);
     66 expect = 'Function';
     67 addThis();
     68 
     69 status = 'Number';
     70 actual = getJSClass(Number);
     71 expect = 'Function';
     72 addThis();
     73 
     74 status = 'Date';
     75 actual = getJSClass(Date);
     76 expect = 'Function';
     77 addThis();
     78 
     79 status = 'RegExp';
     80 actual = getJSClass(RegExp);
     81 expect = 'Function';
     82 addThis();
     83 
     84 status = 'Error';
     85 actual = getJSClass(Error);
     86 expect = 'Function';
     87 addThis();
     88 
     89 
     90 
     91 //---------------------------------------------------------------------------------
     92 test();
     93 //---------------------------------------------------------------------------------
     94 
     95 
     96 
     97 function addThis()
     98 {
     99   statusList[UBound] = status;
    100   actualvalue[UBound] = actual;
    101   expectedvalue[UBound] = expect;
    102   UBound++;
    103 }
    104 
    105 
    106 function test()
    107 {
    108   enterFunc ('test');
    109   printBugNumber (bug);
    110   printStatus (summary);
    111 
    112   for (i = 0; i < UBound; i++)
    113   {
    114     reportCompare(expectedvalue[i], actualvalue[i], getStatus(i));
    115   }
    116 
    117   exitFunc ('test');
    118 }
    119 
    120 
    121 function getStatus(i)
    122 {
    123   return statprefix + statusList[i];
    124 }
    125