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