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.
17* All Rights Reserved.
18*
19* Contributor(s): morse@netscape.com, pschwartau@netscape.com
20* Date: 29 October 2001
21*
22* SUMMARY: Regression test for bug 107138
23* See http://bugzilla.mozilla.org/show_bug.cgi?id=107138
24*
25* The bug: arr['1'] == undefined instead of arr['1'] == 'one'.
26* The bug was intermittent and did not always occur...
27*
28* The cnSTRESS constant defines how many times to repeat this test.
29*/
30//-----------------------------------------------------------------------------
31var UBound = 0;
32var cnSTRESS = 10;
33var cnDASH = '-';
34var bug = 107138;
35var summary = 'Regression test for bug 107138';
36var status = '';
37var statusitems = [];
38var actual = '';
39var actualvalues = [];
40var expect= '';
41var expectedvalues = [];
42
43
44var arr = ['zero', 'one', 'two', 'three', 'four', 'five',
45           'six', 'seven', 'eight', 'nine', 'ten'];
46
47
48// This bug was intermittent. Stress-test it.
49for (var j=0; j<cnSTRESS; j++)
50{
51  status = inSection(j + cnDASH + 1);
52  actual = arr[0];
53  expect = 'zero';
54  addThis();
55
56  status = inSection(j + cnDASH + 2);
57  actual = arr['0'];
58  expect = 'zero';
59  addThis();
60
61  status = inSection(j + cnDASH + 3);
62  actual = arr[1];
63  expect = 'one';
64  addThis();
65
66  status = inSection(j + cnDASH + 4);
67  actual = arr['1'];
68  expect = 'one';
69  addThis();
70
71  status = inSection(j + cnDASH + 5);
72  actual = arr[2];
73  expect = 'two';
74  addThis();
75
76  status = inSection(j + cnDASH + 6);
77  actual = arr['2'];
78  expect = 'two';
79  addThis();
80
81  status = inSection(j + cnDASH + 7);
82  actual = arr[3];
83  expect = 'three';
84  addThis();
85
86  status = inSection(j + cnDASH + 8);
87  actual = arr['3'];
88  expect = 'three';
89  addThis();
90
91  status = inSection(j + cnDASH + 9);
92  actual = arr[4];
93  expect = 'four';
94  addThis();
95
96  status = inSection(j + cnDASH + 10);
97  actual = arr['4'];
98  expect = 'four';
99  addThis();
100
101  status = inSection(j + cnDASH + 11);
102  actual = arr[5];
103  expect = 'five';
104  addThis();
105
106  status = inSection(j + cnDASH + 12);
107  actual = arr['5'];
108  expect = 'five';
109  addThis();
110
111  status = inSection(j + cnDASH + 13);
112  actual = arr[6];
113  expect = 'six';
114  addThis();
115
116  status = inSection(j + cnDASH + 14);
117  actual = arr['6'];
118  expect = 'six';
119  addThis();
120
121  status = inSection(j + cnDASH + 15);
122  actual = arr[7];
123  expect = 'seven';
124  addThis();
125
126  status = inSection(j + cnDASH + 16);
127  actual = arr['7'];
128  expect = 'seven';
129  addThis();
130
131  status = inSection(j + cnDASH + 17);
132  actual = arr[8];
133  expect = 'eight';
134  addThis();
135
136  status = inSection(j + cnDASH + 18);
137  actual = arr['8'];
138  expect = 'eight';
139  addThis();
140
141  status = inSection(j + cnDASH + 19);
142  actual = arr[9];
143  expect = 'nine';
144  addThis();
145
146  status = inSection(j + cnDASH + 20);
147  actual = arr['9'];
148  expect = 'nine';
149  addThis();
150
151  status = inSection(j + cnDASH + 21);
152  actual = arr[10];
153  expect = 'ten';
154  addThis();
155
156  status = inSection(j + cnDASH + 22);
157  actual = arr['10'];
158  expect = 'ten';
159  addThis();
160}
161
162
163//-----------------------------------------------------------------------------
164test();
165//-----------------------------------------------------------------------------
166
167
168
169function addThis()
170{
171  statusitems[UBound] = status;
172  actualvalues[UBound] = actual;
173  expectedvalues[UBound] = expect;
174  UBound++;
175}
176
177
178function test()
179{
180  enterFunc ('test');
181  printBugNumber (bug);
182  printStatus (summary);
183
184  for (var i=0; i<UBound; i++)
185  {
186    reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]);
187  }
188
189  exitFunc ('test');
190}
191