~ubuntu-branches/ubuntu/trusty/mozjs24/trusty-proposed

« back to all changes in this revision

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

  • Committer: Package Import Robot
  • Author(s): Tim Lunn
  • Date: 2014-02-11 21:55:34 UTC
  • Revision ID: package-import@ubuntu.com-20140211215534-m1zyq5aj59md3y07
Tags: upstream-24.2.0
ImportĀ upstreamĀ versionĀ 24.2.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-2js
 
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-2";
 
32
var VERSION = "ECMA_1";
 
33
startTest();
 
34
 
 
35
writeHeaderToLog( SECTION + " Compound Assignment: /=");
 
36
 
 
37
 
 
38
// NaN cases
 
39
 
 
40
new TestCase( SECTION,   
 
41
              "VAR1 = NaN; VAR2=1; VAR1 /= VAR2",      
 
42
              Number.NaN,
 
43
              eval("VAR1 = Number.NaN; VAR2=1; VAR1 /= VAR2") );
 
44
 
 
45
new TestCase( SECTION,   
 
46
              "VAR1 = NaN; VAR2=1; VAR1 /= VAR2; VAR1",
 
47
              Number.NaN,
 
48
              eval("VAR1 = Number.NaN; VAR2=1; VAR1 /= VAR2; VAR1") );
 
49
 
 
50
new TestCase( SECTION,   
 
51
              "VAR1 = NaN; VAR2=0; VAR1 /= VAR2",      
 
52
              Number.NaN,
 
53
              eval("VAR1 = Number.NaN; VAR2=0; VAR1 /= VAR2") );
 
54
 
 
55
new TestCase( SECTION,   
 
56
              "VAR1 = NaN; VAR2=0; VAR1 /= VAR2; VAR1",
 
57
              Number.NaN,
 
58
              eval("VAR1 = Number.NaN; VAR2=0; VAR1 /= VAR2; VAR1") );
 
59
 
 
60
new TestCase( SECTION,   
 
61
              "VAR1 = 0; VAR2=NaN; VAR1 /= VAR2",      
 
62
              Number.NaN,
 
63
              eval("VAR1 = 0; VAR2=Number.NaN; VAR1 /= VAR2") );
 
64
 
 
65
new TestCase( SECTION,   
 
66
              "VAR1 = 0; VAR2=NaN; VAR1 /= VAR2; VAR1",
 
67
              Number.NaN,
 
68
              eval("VAR1 = 0; VAR2=Number.NaN; VAR1 /= VAR2; VAR1") );
 
69
 
 
70
// number cases
 
71
new TestCase( SECTION,   
 
72
              "VAR1 = 0; VAR2=1; VAR1 /= VAR2",        
 
73
              0,         
 
74
              eval("VAR1 = 0; VAR2=1; VAR1 /= VAR2") );
 
75
 
 
76
new TestCase( SECTION,   
 
77
              "VAR1 = 0; VAR2=1; VAR1 /= VAR2;VAR1",   
 
78
              0,         
 
79
              eval("VAR1 = 0; VAR2=1; VAR1 /= VAR2;VAR1") );
 
80
 
 
81
new TestCase( SECTION,   
 
82
              "VAR1 = 0xFF; VAR2 = 0xA, VAR1 /= VAR2",
 
83
              25.5,     
 
84
              eval("VAR1 = 0XFF; VAR2 = 0XA, VAR1 /= VAR2") );
 
85
 
 
86
// special division cases
 
87
 
 
88
new TestCase( SECTION,   
 
89
              "VAR1 = 0; VAR2= Infinity; VAR1 /= VAR2",   
 
90
              0,     
 
91
              eval("VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR1 /= VAR2; VAR1") );
 
92
 
 
93
new TestCase( SECTION,   
 
94
              "VAR1 = -0; VAR2= Infinity; VAR1 /= VAR2",  
 
95
              0,     
 
96
              eval("VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR1 /= VAR2; VAR1") );
 
97
 
 
98
new TestCase( SECTION,   
 
99
              "VAR1 = -0; VAR2= -Infinity; VAR1 /= VAR2", 
 
100
              0,     
 
101
              eval("VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 /= VAR2; VAR1") );
 
102
 
 
103
new TestCase( SECTION,   
 
104
              "VAR1 = 0; VAR2= -Infinity; VAR1 /= VAR2",  
 
105
              0,     
 
106
              eval("VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 /= VAR2; VAR1") );
 
107
 
 
108
new TestCase( SECTION,   
 
109
              "VAR1 = 0; VAR2= Infinity; VAR2 /= VAR1",   
 
110
              Number.POSITIVE_INFINITY,     
 
111
              eval("VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR2 /= VAR1; VAR2") );
 
112
 
 
113
new TestCase( SECTION,   
 
114
              "VAR1 = -0; VAR2= Infinity; VAR2 /= VAR1",  
 
115
              Number.NEGATIVE_INFINITY,     
 
116
              eval("VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR2 /= VAR1; VAR2") );
 
117
 
 
118
new TestCase( SECTION,   
 
119
              "VAR1 = -0; VAR2= -Infinity; VAR2 /= VAR1", 
 
120
              Number.POSITIVE_INFINITY,     
 
121
              eval("VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR2 /= VAR1; VAR2") );
 
122
 
 
123
new TestCase( SECTION,   
 
124
              "VAR1 = 0; VAR2= -Infinity; VAR2 /= VAR1",  
 
125
              Number.NEGATIVE_INFINITY,     
 
126
              eval("VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR2 /= VAR1; VAR2") );
 
127
 
 
128
new TestCase( SECTION,   
 
129
              "VAR1 = Infinity; VAR2= Infinity; VAR1 /= VAR2",  
 
130
              Number.NaN,     
 
131
              eval("VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 /= VAR2; VAR1") );
 
132
 
 
133
new TestCase( SECTION,   
 
134
              "VAR1 = Infinity; VAR2= -Infinity; VAR1 /= VAR2", 
 
135
              Number.NaN,     
 
136
              eval("VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 /= VAR2; VAR1") );
 
137
 
 
138
new TestCase( SECTION,   
 
139
              "VAR1 =-Infinity; VAR2= Infinity; VAR1 /= VAR2",  
 
140
              Number.NaN,     
 
141
              eval("VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 /= VAR2; VAR1") );
 
142
 
 
143
new TestCase( SECTION,   
 
144
              "VAR1 =-Infinity; VAR2=-Infinity; VAR1 /= VAR2",  
 
145
              Number.NaN,     
 
146
              eval("VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 /= VAR2; VAR1") );
 
147
 
 
148
new TestCase( SECTION,   
 
149
              "VAR1 = 0; VAR2= 0; VAR1 /= VAR2",   
 
150
              Number.NaN,     
 
151
              eval("VAR1 = 0; VAR2 = 0; VAR1 /= VAR2; VAR1") );
 
152
 
 
153
new TestCase( SECTION,   
 
154
              "VAR1 = 0; VAR2= -0; VAR1 /= VAR2",  
 
155
              Number.NaN,    
 
156
              eval("VAR1 = 0; VAR2 = -0; VAR1 /= VAR2; VAR1") );
 
157
 
 
158
new TestCase( SECTION,   
 
159
              "VAR1 = -0; VAR2= 0; VAR1 /= VAR2",  
 
160
              Number.NaN,     
 
161
              eval("VAR1 = -0; VAR2 = 0; VAR1 /= VAR2; VAR1") );
 
162
 
 
163
new TestCase( SECTION,   
 
164
              "VAR1 = -0; VAR2= -0; VAR1 /= VAR2", 
 
165
              Number.NaN,     
 
166
              eval("VAR1 = -0; VAR2 = -0; VAR1 /= VAR2; VAR1") );
 
167
 
 
168
new TestCase( SECTION,   
 
169
              "VAR1 = 1; VAR2= 0; VAR1 /= VAR2",   
 
170
              Number.POSITIVE_INFINITY,     
 
171
              eval("VAR1 = 1; VAR2 = 0; VAR1 /= VAR2; VAR1") );
 
172
 
 
173
new TestCase( SECTION,   
 
174
              "VAR1 = 1; VAR2= -0; VAR1 /= VAR2",  
 
175
              Number.NEGATIVE_INFINITY,     
 
176
              eval("VAR1 = 1; VAR2 = -0; VAR1 /= VAR2; VAR1") );
 
177
 
 
178
new TestCase( SECTION,   
 
179
              "VAR1 = -1; VAR2= 0; VAR1 /= VAR2",  
 
180
              Number.NEGATIVE_INFINITY,     
 
181
              eval("VAR1 = -1; VAR2 = 0; VAR1 /= VAR2; VAR1") );
 
182
 
 
183
new TestCase( SECTION,   
 
184
              "VAR1 = -1; VAR2= -0; VAR1 /= VAR2", 
 
185
              Number.POSITIVE_INFINITY,     
 
186
              eval("VAR1 = -1; VAR2 = -0; VAR1 /= VAR2; VAR1") );
 
187
 
 
188
// string cases
 
189
new TestCase( SECTION,   
 
190
              "VAR1 = 1000; VAR2 = '10', VAR1 /= VAR2; VAR1",
 
191
              100,      
 
192
              eval("VAR1 = 1000; VAR2 = '10', VAR1 /= VAR2; VAR1") );
 
193
 
 
194
new TestCase( SECTION,   
 
195
              "VAR1 = '1000'; VAR2 = 10, VAR1 /= VAR2; VAR1",
 
196
              100,      
 
197
              eval("VAR1 = '1000'; VAR2 = 10, VAR1 /= VAR2; VAR1") );
 
198
/*
 
199
  new TestCase( SECTION,    "VAR1 = 10; VAR2 = '0XFF', VAR1 /= VAR2", 2550,       eval("VAR1 = 10; VAR2 = '0XFF', VAR1 /= VAR2") );
 
200
  new TestCase( SECTION,    "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 /= VAR2", 2550,      eval("VAR1 = '0XFF'; VAR2 = 0XA, VAR1 /= VAR2") );
 
201
 
 
202
  new TestCase( SECTION,    "VAR1 = '10'; VAR2 = '255', VAR1 /= VAR2", 2550,      eval("VAR1 = '10'; VAR2 = '255', VAR1 /= VAR2") );
 
203
  new TestCase( SECTION,    "VAR1 = '10'; VAR2 = '0XFF', VAR1 /= VAR2", 2550,     eval("VAR1 = '10'; VAR2 = '0XFF', VAR1 /= VAR2") );
 
204
  new TestCase( SECTION,    "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 /= VAR2", 2550,      eval("VAR1 = '0XFF'; VAR2 = 0XA, VAR1 /= VAR2") );
 
205
 
 
206
  // boolean cases
 
207
  new TestCase( SECTION,    "VAR1 = true; VAR2 = false; VAR1 /= VAR2",    0,      eval("VAR1 = true; VAR2 = false; VAR1 /= VAR2") );
 
208
  new TestCase( SECTION,    "VAR1 = true; VAR2 = true; VAR1 /= VAR2",    1,      eval("VAR1 = true; VAR2 = true; VAR1 /= VAR2") );
 
209
 
 
210
  // object cases
 
211
  new TestCase( SECTION,    "VAR1 = new Boolean(true); VAR2 = 10; VAR1 /= VAR2;VAR1",    10,      eval("VAR1 = new Boolean(true); VAR2 = 10; VAR1 /= VAR2; VAR1") );
 
212
  new TestCase( SECTION,    "VAR1 = new Number(11); VAR2 = 10; VAR1 /= VAR2; VAR1",    110,      eval("VAR1 = new Number(11); VAR2 = 10; VAR1 /= VAR2; VAR1") );
 
213
  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") );
 
214
  new TestCase( SECTION,    "VAR1 = new String('15'); VAR2 = new String('0xF'); VAR1 /= VAR2",    255,      eval("VAR1 = String('15'); VAR2 = new String('0xF'); VAR1 /= VAR2") );
 
215
 
 
216
*/
 
217
 
 
218
test();
 
219