summaryrefslogtreecommitdiffstats
path: root/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-57043.js
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-57043.js')
-rw-r--r--Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-57043.js88
1 files changed, 88 insertions, 0 deletions
diff --git a/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-57043.js b/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-57043.js
new file mode 100644
index 0000000..39136a9
--- /dev/null
+++ b/Source/JavaScriptCore/tests/mozilla/js1_5/Regress/regress-57043.js
@@ -0,0 +1,88 @@
+/*
+* The contents of this file are subject to the Netscape Public
+* License Version 1.1 (the "License"); you may not use this file
+* except in compliance with the License. You may obtain a copy of
+* the License at http://www.mozilla.org/NPL/
+*
+* Software distributed under the License is distributed on an "AS
+* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+* implied. See the License for the specific language governing
+* rights and limitations under the License.
+*
+* The Original Code is mozilla.org code.
+*
+* The Initial Developer of the Original Code is Netscape
+* Communications Corporation. Portions created by Netscape are
+* Copyright (C) 1998 Netscape Communications Corporation. All
+* Rights Reserved.
+*
+* Contributor(s): pschwartau@netscape.com
+* Date: 03 December 2000
+*
+*
+* SUMMARY: This test arose from Bugzilla bug 57043:
+* "Negative integers as object properties: strange behavior!"
+*
+* We check that object properties may be indexed by signed
+* numeric literals, as in assignments like obj[-1] = 'Hello'
+*
+* NOTE: it should not matter whether we provide the literal with
+* quotes around it or not; e.g. these should be equivalent:
+*
+* obj[-1] = 'Hello'
+* obj['-1'] = 'Hello'
+*/
+//-------------------------------------------------------------------------------------------------
+var bug = 57043;
+var summary = 'Indexing object properties by signed numerical literals -'
+var statprefix = 'Adding a property to test object with an index of ';
+var statsuffix = ', testing it now -';
+var propprefix = 'This is property ';
+var obj = new Object();
+var status = ''; var actual = ''; var expect = ''; var value = '';
+
+
+// various indices to try -
+var index = Array(-5000, -507, -3, -2, -1, 0, 1, 2, 3);
+
+
+//-------------------------------------------------------------------------------------------------
+test();
+//-------------------------------------------------------------------------------------------------
+
+
+function test()
+{
+ enterFunc ('test');
+ printBugNumber (bug);
+ printStatus (summary);
+
+ for (j in index) {testProperty(index[j]);}
+
+ exitFunc ('test');
+}
+
+
+function testProperty(i)
+{
+ status = getStatus(i);
+
+ // try to assign a property using the given index -
+ obj[i] = value = (propprefix + i);
+
+ // try to read the property back via the index (as number) -
+ expect = value;
+ actual = obj[i];
+ reportCompare(expect, actual, status);
+
+ // try to read the property back via the index as string -
+ expect = value;
+ actual = obj[String(i)];
+ reportCompare(expect, actual, status);
+}
+
+
+function getStatus(i)
+{
+ return (statprefix + i + statsuffix);
+}