initial import
[vuplus_webkit] / Source / JavaScriptCore / tests / mozilla / js1_5 / Regress / regress-57043.js
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
8 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
9 * 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@netscape.com  
20 * Date: 03 December 2000
21 *
22 *
23 * SUMMARY:  This test arose from Bugzilla bug 57043: 
24 * "Negative integers as object properties: strange behavior!"
25 *
26 * We check that object properties may be indexed by signed 
27 * numeric literals, as in assignments like obj[-1] = 'Hello'  
28
29 * NOTE: it should not matter whether we provide the literal with
30 * quotes around it or not; e.g. these should be equivalent:
31 *
32 *                                    obj[-1]  = 'Hello'
33 *                                    obj['-1']  = 'Hello'
34 */
35 //-------------------------------------------------------------------------------------------------
36 var bug = 57043;
37 var summary = 'Indexing object properties by signed numerical literals -'
38 var statprefix = 'Adding a property to test object with an index of ';
39 var statsuffix =  ', testing it now -';
40 var propprefix = 'This is property ';
41 var obj = new Object();
42 var status = ''; var actual = ''; var expect = ''; var value = '';
43
44
45 //  various indices to try -
46 var index = Array(-5000, -507, -3, -2, -1, 0, 1, 2, 3);  
47
48
49 //-------------------------------------------------------------------------------------------------  
50 test();
51 //-------------------------------------------------------------------------------------------------
52
53
54 function test() 
55 {
56   enterFunc ('test'); 
57   printBugNumber (bug);
58   printStatus (summary);
59
60   for (j in index) {testProperty(index[j]);}
61
62   exitFunc ('test');
63 }
64
65
66 function testProperty(i)
67 {
68   status = getStatus(i);
69
70   // try to assign a property using the given index -
71   obj[i] = value = (propprefix  +  i);   
72   
73   // try to read the property back via the index (as number) -
74   expect = value;
75   actual = obj[i];
76   reportCompare(expect, actual, status);  
77
78   // try to read the property back via the index as string -
79   expect = value;
80   actual = obj[String(i)];
81   reportCompare(expect, actual, status); 
82 }
83
84
85 function getStatus(i)
86
87   return (statprefix  +  i  +  statsuffix); 
88 }