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
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 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): brendan@mozilla.org, pschwartau@netscape.com
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Date: 15 Feb 2001
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* SUMMARY: calling obj.eval(str)
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* See http://bugzilla.mozilla.org/show_bug.cgi?id=68498
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* See http://bugzilla.mozilla.org/showattachment.cgi?attach_id=25251
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Brendan:
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* "Backward compatibility: support calling obj.eval(str), which evaluates
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   str using obj as the scope chain and variable object."
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project//-------------------------------------------------------------------------------------------------
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar bug = 68498;
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar summary = 'Testing calling obj.eval(str)';
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar statprefix = '; currently at expect[';
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar statsuffix = '] within test -';
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar actual = [ ];
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar expect = [ ];
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Capture a reference to the global object -
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar self = this;
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// This function is the heart of the test -
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction f(s) {self.eval(s); return y;}
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Set the actual-results array -
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual[0] = f('var y = 43');
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual[1] = 'y' in self && y;
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual[2] = delete y;
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual[3] = 'y' in self;
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Set the expected-results array -
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect[0] = 43;
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect[1] = 43;
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect[2] = true;
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect[3] = false;
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project//-------------------------------------------------------------------------------------------------
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttest();
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project//-------------------------------------------------------------------------------------------------
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction test()
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  enterFunc ('test');
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  printBugNumber (bug);
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  printStatus (summary);
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  for (var i in expect)
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  {
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    reportCompare(expect[i], actual[i], getStatus(i));
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  }
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  exitFunc ('test');
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction getStatus(i)
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  return (summary  +  statprefix  +  i  +  statsuffix);
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
85