~ubuntu-branches/ubuntu/saucy/mozjs17/saucy-proposed

« back to all changes in this revision

Viewing changes to js/src/tests/ecma/Expressions/11.13.2-3.js

  • Committer: Package Import Robot
  • Author(s): Rico Tzschichholz
  • Date: 2013-05-25 12:24:23 UTC
  • Revision ID: package-import@ubuntu.com-20130525122423-zmxucrhtensw90xy
Tags: upstream-17.0.0
ImportĀ upstreamĀ versionĀ 17.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 
2
/* This Source Code Form is subject to the terms of the Mozilla Public
 
3
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 
4
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
5
 
 
6
 
 
7
/**
 
8
   File Name:          11.13.2-4.js
 
9
   ECMA Section:       11.13.2 Compound Assignment: %=
 
10
   Description:
 
11
 
 
12
   *= /= %= += -= <<= >>= >>>= &= ^= |=
 
13
 
 
14
   11.13.2 Compound assignment ( op= )
 
15
 
 
16
   The production AssignmentExpression :
 
17
   LeftHandSideExpression @ = AssignmentExpression, where @ represents one of
 
18
   the operators indicated above, is evaluated as follows:
 
19
 
 
20
   1.  Evaluate LeftHandSideExpression.
 
21
   2.  Call GetValue(Result(1)).
 
22
   3.  Evaluate AssignmentExpression.
 
23
   4.  Call GetValue(Result(3)).
 
24
   5.  Apply operator @ to Result(2) and Result(4).
 
25
   6.  Call PutValue(Result(1), Result(5)).
 
26
   7.  Return Result(5).
 
27
 
 
28
   Author:             christine@netscape.com
 
29
   Date:               12 november 1997
 
30
*/
 
31
var SECTION = "11.13.2-3";
 
32
var VERSION = "ECMA_1";
 
33
startTest();
 
34
 
 
35
writeHeaderToLog( SECTION + " Compound Assignment: +=");
 
36
 
 
37
// If either operand is NaN,  result is NaN
 
38
 
 
39
new TestCase( SECTION,   
 
40
              "VAR1 = NaN; VAR2=1; VAR1 %= VAR2",      
 
41
              Number.NaN,
 
42
              eval("VAR1 = Number.NaN; VAR2=1; VAR1 %= VAR2") );
 
43
 
 
44
new TestCase( SECTION,   
 
45
              "VAR1 = NaN; VAR2=1; VAR1 %= VAR2; VAR1",
 
46
              Number.NaN,
 
47
              eval("VAR1 = Number.NaN; VAR2=1; VAR1 %= VAR2; VAR1") );
 
48
 
 
49
new TestCase( SECTION,   
 
50
              "VAR1 = NaN; VAR2=0; VAR1 %= VAR2",      
 
51
              Number.NaN,
 
52
              eval("VAR1 = Number.NaN; VAR2=0; VAR1 %= VAR2") );
 
53
 
 
54
new TestCase( SECTION,   
 
55
              "VAR1 = NaN; VAR2=0; VAR1 %= VAR2; VAR1",
 
56
              Number.NaN,
 
57
              eval("VAR1 = Number.NaN; VAR2=0; VAR1 %= VAR2; VAR1") );
 
58
 
 
59
new TestCase( SECTION,   
 
60
              "VAR1 = 0; VAR2=NaN; VAR1 %= VAR2",      
 
61
              Number.NaN,
 
62
              eval("VAR1 = 0; VAR2=Number.NaN; VAR1 %= VAR2") );
 
63
 
 
64
new TestCase( SECTION,   
 
65
              "VAR1 = 0; VAR2=NaN; VAR1 %= VAR2; VAR1",
 
66
              Number.NaN,
 
67
              eval("VAR1 = 0; VAR2=Number.NaN; VAR1 %= VAR2; VAR1") );
 
68
 
 
69
// if the dividend is infinity or the divisor is zero or both, the result is NaN
 
70
 
 
71
new TestCase( SECTION,   
 
72
              "VAR1 = Infinity; VAR2= Infinity; VAR1 %= VAR2; VAR1",  
 
73
              Number.NaN,     
 
74
              eval("VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 %= VAR2; VAR1") );
 
75
 
 
76
new TestCase( SECTION,   
 
77
              "VAR1 = Infinity; VAR2= -Infinity; VAR1 %= VAR2; VAR1", 
 
78
              Number.NaN,     
 
79
              eval("VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 %= VAR2; VAR1") );
 
80
 
 
81
new TestCase( SECTION,   
 
82
              "VAR1 =-Infinity; VAR2= Infinity; VAR1 %= VAR2; VAR1",  
 
83
              Number.NaN,     
 
84
              eval("VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 %= VAR2; VAR1") );
 
85
 
 
86
new TestCase( SECTION,   
 
87
              "VAR1 =-Infinity; VAR2=-Infinity; VAR1 %= VAR2; VAR1",  
 
88
              Number.NaN,     
 
89
              eval("VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 %= VAR2; VAR1") );
 
90
 
 
91
new TestCase( SECTION,   
 
92
              "VAR1 = 0; VAR2= Infinity; VAR2 %= VAR1",   
 
93
              Number.NaN,     
 
94
              eval("VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR2 %= VAR1; VAR2") );
 
95
 
 
96
new TestCase( SECTION,   
 
97
              "VAR1 = -0; VAR2= Infinity; VAR2 %= VAR1",  
 
98
              Number.NaN,     
 
99
              eval("VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR2 %= VAR1; VAR2") );
 
100
 
 
101
new TestCase( SECTION,   
 
102
              "VAR1 = -0; VAR2= -Infinity; VAR2 %= VAR1", 
 
103
              Number.NaN,     
 
104
              eval("VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR2 %= VAR1; VAR2") );
 
105
 
 
106
new TestCase( SECTION,   
 
107
              "VAR1 = 0; VAR2= -Infinity; VAR2 %= VAR1",  
 
108
              Number.NaN,     
 
109
              eval("VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR2 %= VAR1; VAR2") );
 
110
 
 
111
new TestCase( SECTION,   
 
112
              "VAR1 = 1; VAR2= Infinity; VAR2 %= VAR1",   
 
113
              Number.NaN,     
 
114
              eval("VAR1 = 1; VAR2 = Number.POSITIVE_INFINITY; VAR2 %= VAR1; VAR2") );
 
115
 
 
116
new TestCase( SECTION,   
 
117
              "VAR1 = -1; VAR2= Infinity; VAR2 %= VAR1",  
 
118
              Number.NaN,     
 
119
              eval("VAR1 = -1; VAR2 = Number.POSITIVE_INFINITY; VAR2 %= VAR1; VAR2") );
 
120
 
 
121
new TestCase( SECTION,   
 
122
              "VAR1 = -1; VAR2= -Infinity; VAR2 %= VAR1", 
 
123
              Number.NaN,     
 
124
              eval("VAR1 = -1; VAR2 = Number.NEGATIVE_INFINITY; VAR2 %= VAR1; VAR2") );
 
125
 
 
126
new TestCase( SECTION,   
 
127
              "VAR1 = 1; VAR2= -Infinity; VAR2 %= VAR1",  
 
128
              Number.NaN,     
 
129
              eval("VAR1 = 1; VAR2 = Number.NEGATIVE_INFINITY; VAR2 %= VAR1; VAR2") );
 
130
 
 
131
new TestCase( SECTION,   
 
132
              "VAR1 = 0; VAR2= 0; VAR1 %= VAR2",   
 
133
              Number.NaN,     
 
134
              eval("VAR1 = 0; VAR2 = 0; VAR1 %= VAR2; VAR1") );
 
135
 
 
136
new TestCase( SECTION,   
 
137
              "VAR1 = 0; VAR2= -0; VAR1 %= VAR2",  
 
138
              Number.NaN,     
 
139
              eval("VAR1 = 0; VAR2 = -0; VAR1 %= VAR2; VAR1") );
 
140
 
 
141
new TestCase( SECTION,   
 
142
              "VAR1 = -0; VAR2= 0; VAR1 %= VAR2",  
 
143
              Number.NaN,     
 
144
              eval("VAR1 = -0; VAR2 = 0; VAR1 %= VAR2; VAR1") );
 
145
 
 
146
new TestCase( SECTION,   
 
147
              "VAR1 = -0; VAR2= -0; VAR1 %= VAR2", 
 
148
              Number.NaN,     
 
149
              eval("VAR1 = -0; VAR2 = -0; VAR1 %= VAR2; VAR1") );
 
150
 
 
151
new TestCase( SECTION,   
 
152
              "VAR1 = 1; VAR2= 0; VAR1 %= VAR2",   
 
153
              Number.NaN,     
 
154
              eval("VAR1 = 1; VAR2 = 0; VAR1 %= VAR2; VAR1") );
 
155
 
 
156
new TestCase( SECTION,   
 
157
              "VAR1 = 1; VAR2= -0; VAR1 %= VAR2",  
 
158
              Number.NaN,     
 
159
              eval("VAR1 = 1; VAR2 = -0; VAR1 %= VAR2; VAR1") );
 
160
 
 
161
new TestCase( SECTION,   
 
162
              "VAR1 = -1; VAR2= 0; VAR1 %= VAR2",  
 
163
              Number.NaN,     
 
164
              eval("VAR1 = -1; VAR2 = 0; VAR1 %= VAR2; VAR1") );
 
165
 
 
166
new TestCase( SECTION,   
 
167
              "VAR1 = -1; VAR2= -0; VAR1 %= VAR2", 
 
168
              Number.NaN,     
 
169
              eval("VAR1 = -1; VAR2 = -0; VAR1 %= VAR2; VAR1") );
 
170
 
 
171
// if the dividend is finite and the divisor is an infinity, the result equals the dividend.
 
172
 
 
173
new TestCase( SECTION,   
 
174
              "VAR1 = 0; VAR2= Infinity; VAR1 %= VAR2;VAR1",   
 
175
              0,     
 
176
              eval("VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR1 %= VAR2; VAR1") );
 
177
 
 
178
new TestCase( SECTION,   
 
179
              "VAR1 = -0; VAR2= Infinity; VAR1 %= VAR2;VAR1",  
 
180
              -0,    
 
181
              eval("VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR1 %= VAR2; VAR1") );
 
182
 
 
183
new TestCase( SECTION,   
 
184
              "VAR1 = -0; VAR2= -Infinity; VAR1 %= VAR2;VAR1", 
 
185
              -0,    
 
186
              eval("VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 %= VAR2; VAR1") );
 
187
 
 
188
new TestCase( SECTION,   
 
189
              "VAR1 = 0; VAR2= -Infinity; VAR1 %= VAR2;VAR1",  
 
190
              0,     
 
191
              eval("VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 %= VAR2; VAR1") );
 
192
 
 
193
new TestCase( SECTION,   
 
194
              "VAR1 = 1; VAR2= Infinity; VAR1 %= VAR2;VAR1",   
 
195
              1,     
 
196
              eval("VAR1 = 1; VAR2 = Number.POSITIVE_INFINITY; VAR1 %= VAR2; VAR1") );
 
197
 
 
198
new TestCase( SECTION,   
 
199
              "VAR1 = -1; VAR2= Infinity; VAR1 %= VAR2;VAR1",  
 
200
              -1,    
 
201
              eval("VAR1 = -1; VAR2 = Number.POSITIVE_INFINITY; VAR1 %= VAR2; VAR1") );
 
202
 
 
203
new TestCase( SECTION,   
 
204
              "VAR1 = -1; VAR2= -Infinity; VAR1 %= VAR2;VAR1", 
 
205
              -1,    
 
206
              eval("VAR1 = -1; VAR2 = Number.NEGATIVE_INFINITY; VAR1 %= VAR2; VAR1") );
 
207
 
 
208
new TestCase( SECTION,   
 
209
              "VAR1 = 1; VAR2= -Infinity; VAR1 %= VAR2;VAR1",  
 
210
              1,     
 
211
              eval("VAR1 = 1; VAR2 = Number.NEGATIVE_INFINITY; VAR1 %= VAR2; VAR1") );
 
212
 
 
213
// if the dividend is a zero and the divisor is finite, the result is the same as the dividend
 
214
 
 
215
new TestCase( SECTION,   
 
216
              "VAR1 = 0; VAR2= 1; VAR1 %= VAR2; VAR1",   
 
217
              0,   
 
218
              eval("VAR1 = 0; VAR2 = 1; VAR1 %= VAR2; VAR1") );
 
219
 
 
220
new TestCase( SECTION,   
 
221
              "VAR1 = -0; VAR2= 1; VAR1 %= VAR2; VAR1",  
 
222
              -0,  
 
223
              eval("VAR1 = -0; VAR2 = 1; VAR1 %= VAR2; VAR1") );
 
224
 
 
225
new TestCase( SECTION,   
 
226
              "VAR1 = -0; VAR2= -1; VAR1 %= VAR2; VAR1", 
 
227
              -0,  
 
228
              eval("VAR1 = -0; VAR2 = -1; VAR1 %= VAR2; VAR1") );
 
229
 
 
230
new TestCase( SECTION,   
 
231
              "VAR1 = 0; VAR2= -1; VAR1 %= VAR2; VAR1",  
 
232
              0,   
 
233
              eval("VAR1 = 0; VAR2 = -1; VAR1 %= VAR2; VAR1") );
 
234
 
 
235
// string cases
 
236
new TestCase( SECTION,   
 
237
              "VAR1 = 1000; VAR2 = '10', VAR1 %= VAR2; VAR1",
 
238
              0,      
 
239
              eval("VAR1 = 1000; VAR2 = '10', VAR1 %= VAR2; VAR1") );
 
240
 
 
241
new TestCase( SECTION,   
 
242
              "VAR1 = '1000'; VAR2 = 10, VAR1 %= VAR2; VAR1",
 
243
              0,      
 
244
              eval("VAR1 = '1000'; VAR2 = 10, VAR1 %= VAR2; VAR1") );
 
245
/*
 
246
  new TestCase( SECTION,    "VAR1 = 10; VAR2 = '0XFF', VAR1 %= VAR2", 2550,       eval("VAR1 = 10; VAR2 = '0XFF', VAR1 %= VAR2") );
 
247
  new TestCase( SECTION,    "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 %= VAR2", 2550,      eval("VAR1 = '0XFF'; VAR2 = 0XA, VAR1 %= VAR2") );
 
248
 
 
249
  new TestCase( SECTION,    "VAR1 = '10'; VAR2 = '255', VAR1 %= VAR2", 2550,      eval("VAR1 = '10'; VAR2 = '255', VAR1 %= VAR2") );
 
250
  new TestCase( SECTION,    "VAR1 = '10'; VAR2 = '0XFF', VAR1 %= VAR2", 2550,     eval("VAR1 = '10'; VAR2 = '0XFF', VAR1 %= VAR2") );
 
251
  new TestCase( SECTION,    "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 %= VAR2", 2550,      eval("VAR1 = '0XFF'; VAR2 = 0XA, VAR1 %= VAR2") );
 
252
 
 
253
  // boolean cases
 
254
  new TestCase( SECTION,    "VAR1 = true; VAR2 = false; VAR1 %= VAR2",    0,      eval("VAR1 = true; VAR2 = false; VAR1 %= VAR2") );
 
255
  new TestCase( SECTION,    "VAR1 = true; VAR2 = true; VAR1 %= VAR2",    1,      eval("VAR1 = true; VAR2 = true; VAR1 %= VAR2") );
 
256
 
 
257
  // object cases
 
258
  new TestCase( SECTION,    "VAR1 = new Boolean(true); VAR2 = 10; VAR1 %= VAR2;VAR1",    10,      eval("VAR1 = new Boolean(true); VAR2 = 10; VAR1 %= VAR2; VAR1") );
 
259
  new TestCase( SECTION,    "VAR1 = new Number(11); VAR2 = 10; VAR1 %= VAR2; VAR1",    110,      eval("VAR1 = new Number(11); VAR2 = 10; VAR1 %= VAR2; VAR1") );
 
260
  new TestCase( SECTION,    "VAR1 = new Number(11); VAR2 = new Number(10); VAR1 %= VAR2",    110,      eval("VAR1 = new Number(11); VAR2 = new Number(10); VAR1 %= VAR2") );
 
261
  new TestCase( SECTION,    "VAR1 = new String('15'); VAR2 = new String('0xF'); VAR1 %= VAR2",    255,      eval("VAR1 = String('15'); VAR2 = new String('0xF'); VAR1 %= VAR2") );
 
262
 
 
263
*/
 
264
 
 
265
test();
 
266