1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/tests/ecma/Expressions/11.13.2-2.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,219 @@ 1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.8 + 1.9 + 1.10 +/** 1.11 + File Name: 11.13.2-2js 1.12 + ECMA Section: 11.13.2 Compound Assignment: /= 1.13 + Description: 1.14 + 1.15 + *= /= %= += -= <<= >>= >>>= &= ^= |= 1.16 + 1.17 + 11.13.2 Compound assignment ( op= ) 1.18 + 1.19 + The production AssignmentExpression : 1.20 + LeftHandSideExpression @ = AssignmentExpression, where @ represents one of 1.21 + the operators indicated above, is evaluated as follows: 1.22 + 1.23 + 1. Evaluate LeftHandSideExpression. 1.24 + 2. Call GetValue(Result(1)). 1.25 + 3. Evaluate AssignmentExpression. 1.26 + 4. Call GetValue(Result(3)). 1.27 + 5. Apply operator @ to Result(2) and Result(4). 1.28 + 6. Call PutValue(Result(1), Result(5)). 1.29 + 7. Return Result(5). 1.30 + 1.31 + Author: christine@netscape.com 1.32 + Date: 12 november 1997 1.33 +*/ 1.34 +var SECTION = "11.13.2-2"; 1.35 +var VERSION = "ECMA_1"; 1.36 +startTest(); 1.37 + 1.38 +writeHeaderToLog( SECTION + " Compound Assignment: /="); 1.39 + 1.40 + 1.41 +// NaN cases 1.42 + 1.43 +new TestCase( SECTION, 1.44 + "VAR1 = NaN; VAR2=1; VAR1 /= VAR2", 1.45 + Number.NaN, 1.46 + eval("VAR1 = Number.NaN; VAR2=1; VAR1 /= VAR2") ); 1.47 + 1.48 +new TestCase( SECTION, 1.49 + "VAR1 = NaN; VAR2=1; VAR1 /= VAR2; VAR1", 1.50 + Number.NaN, 1.51 + eval("VAR1 = Number.NaN; VAR2=1; VAR1 /= VAR2; VAR1") ); 1.52 + 1.53 +new TestCase( SECTION, 1.54 + "VAR1 = NaN; VAR2=0; VAR1 /= VAR2", 1.55 + Number.NaN, 1.56 + eval("VAR1 = Number.NaN; VAR2=0; VAR1 /= VAR2") ); 1.57 + 1.58 +new TestCase( SECTION, 1.59 + "VAR1 = NaN; VAR2=0; VAR1 /= VAR2; VAR1", 1.60 + Number.NaN, 1.61 + eval("VAR1 = Number.NaN; VAR2=0; VAR1 /= VAR2; VAR1") ); 1.62 + 1.63 +new TestCase( SECTION, 1.64 + "VAR1 = 0; VAR2=NaN; VAR1 /= VAR2", 1.65 + Number.NaN, 1.66 + eval("VAR1 = 0; VAR2=Number.NaN; VAR1 /= VAR2") ); 1.67 + 1.68 +new TestCase( SECTION, 1.69 + "VAR1 = 0; VAR2=NaN; VAR1 /= VAR2; VAR1", 1.70 + Number.NaN, 1.71 + eval("VAR1 = 0; VAR2=Number.NaN; VAR1 /= VAR2; VAR1") ); 1.72 + 1.73 +// number cases 1.74 +new TestCase( SECTION, 1.75 + "VAR1 = 0; VAR2=1; VAR1 /= VAR2", 1.76 + 0, 1.77 + eval("VAR1 = 0; VAR2=1; VAR1 /= VAR2") ); 1.78 + 1.79 +new TestCase( SECTION, 1.80 + "VAR1 = 0; VAR2=1; VAR1 /= VAR2;VAR1", 1.81 + 0, 1.82 + eval("VAR1 = 0; VAR2=1; VAR1 /= VAR2;VAR1") ); 1.83 + 1.84 +new TestCase( SECTION, 1.85 + "VAR1 = 0xFF; VAR2 = 0xA, VAR1 /= VAR2", 1.86 + 25.5, 1.87 + eval("VAR1 = 0XFF; VAR2 = 0XA, VAR1 /= VAR2") ); 1.88 + 1.89 +// special division cases 1.90 + 1.91 +new TestCase( SECTION, 1.92 + "VAR1 = 0; VAR2= Infinity; VAR1 /= VAR2", 1.93 + 0, 1.94 + eval("VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR1 /= VAR2; VAR1") ); 1.95 + 1.96 +new TestCase( SECTION, 1.97 + "VAR1 = -0; VAR2= Infinity; VAR1 /= VAR2", 1.98 + 0, 1.99 + eval("VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR1 /= VAR2; VAR1") ); 1.100 + 1.101 +new TestCase( SECTION, 1.102 + "VAR1 = -0; VAR2= -Infinity; VAR1 /= VAR2", 1.103 + 0, 1.104 + eval("VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 /= VAR2; VAR1") ); 1.105 + 1.106 +new TestCase( SECTION, 1.107 + "VAR1 = 0; VAR2= -Infinity; VAR1 /= VAR2", 1.108 + 0, 1.109 + eval("VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 /= VAR2; VAR1") ); 1.110 + 1.111 +new TestCase( SECTION, 1.112 + "VAR1 = 0; VAR2= Infinity; VAR2 /= VAR1", 1.113 + Number.POSITIVE_INFINITY, 1.114 + eval("VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR2 /= VAR1; VAR2") ); 1.115 + 1.116 +new TestCase( SECTION, 1.117 + "VAR1 = -0; VAR2= Infinity; VAR2 /= VAR1", 1.118 + Number.NEGATIVE_INFINITY, 1.119 + eval("VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR2 /= VAR1; VAR2") ); 1.120 + 1.121 +new TestCase( SECTION, 1.122 + "VAR1 = -0; VAR2= -Infinity; VAR2 /= VAR1", 1.123 + Number.POSITIVE_INFINITY, 1.124 + eval("VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR2 /= VAR1; VAR2") ); 1.125 + 1.126 +new TestCase( SECTION, 1.127 + "VAR1 = 0; VAR2= -Infinity; VAR2 /= VAR1", 1.128 + Number.NEGATIVE_INFINITY, 1.129 + eval("VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR2 /= VAR1; VAR2") ); 1.130 + 1.131 +new TestCase( SECTION, 1.132 + "VAR1 = Infinity; VAR2= Infinity; VAR1 /= VAR2", 1.133 + Number.NaN, 1.134 + eval("VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 /= VAR2; VAR1") ); 1.135 + 1.136 +new TestCase( SECTION, 1.137 + "VAR1 = Infinity; VAR2= -Infinity; VAR1 /= VAR2", 1.138 + Number.NaN, 1.139 + eval("VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 /= VAR2; VAR1") ); 1.140 + 1.141 +new TestCase( SECTION, 1.142 + "VAR1 =-Infinity; VAR2= Infinity; VAR1 /= VAR2", 1.143 + Number.NaN, 1.144 + eval("VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 /= VAR2; VAR1") ); 1.145 + 1.146 +new TestCase( SECTION, 1.147 + "VAR1 =-Infinity; VAR2=-Infinity; VAR1 /= VAR2", 1.148 + Number.NaN, 1.149 + eval("VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 /= VAR2; VAR1") ); 1.150 + 1.151 +new TestCase( SECTION, 1.152 + "VAR1 = 0; VAR2= 0; VAR1 /= VAR2", 1.153 + Number.NaN, 1.154 + eval("VAR1 = 0; VAR2 = 0; VAR1 /= VAR2; VAR1") ); 1.155 + 1.156 +new TestCase( SECTION, 1.157 + "VAR1 = 0; VAR2= -0; VAR1 /= VAR2", 1.158 + Number.NaN, 1.159 + eval("VAR1 = 0; VAR2 = -0; VAR1 /= VAR2; VAR1") ); 1.160 + 1.161 +new TestCase( SECTION, 1.162 + "VAR1 = -0; VAR2= 0; VAR1 /= VAR2", 1.163 + Number.NaN, 1.164 + eval("VAR1 = -0; VAR2 = 0; VAR1 /= VAR2; VAR1") ); 1.165 + 1.166 +new TestCase( SECTION, 1.167 + "VAR1 = -0; VAR2= -0; VAR1 /= VAR2", 1.168 + Number.NaN, 1.169 + eval("VAR1 = -0; VAR2 = -0; VAR1 /= VAR2; VAR1") ); 1.170 + 1.171 +new TestCase( SECTION, 1.172 + "VAR1 = 1; VAR2= 0; VAR1 /= VAR2", 1.173 + Number.POSITIVE_INFINITY, 1.174 + eval("VAR1 = 1; VAR2 = 0; VAR1 /= VAR2; VAR1") ); 1.175 + 1.176 +new TestCase( SECTION, 1.177 + "VAR1 = 1; VAR2= -0; VAR1 /= VAR2", 1.178 + Number.NEGATIVE_INFINITY, 1.179 + eval("VAR1 = 1; VAR2 = -0; VAR1 /= VAR2; VAR1") ); 1.180 + 1.181 +new TestCase( SECTION, 1.182 + "VAR1 = -1; VAR2= 0; VAR1 /= VAR2", 1.183 + Number.NEGATIVE_INFINITY, 1.184 + eval("VAR1 = -1; VAR2 = 0; VAR1 /= VAR2; VAR1") ); 1.185 + 1.186 +new TestCase( SECTION, 1.187 + "VAR1 = -1; VAR2= -0; VAR1 /= VAR2", 1.188 + Number.POSITIVE_INFINITY, 1.189 + eval("VAR1 = -1; VAR2 = -0; VAR1 /= VAR2; VAR1") ); 1.190 + 1.191 +// string cases 1.192 +new TestCase( SECTION, 1.193 + "VAR1 = 1000; VAR2 = '10', VAR1 /= VAR2; VAR1", 1.194 + 100, 1.195 + eval("VAR1 = 1000; VAR2 = '10', VAR1 /= VAR2; VAR1") ); 1.196 + 1.197 +new TestCase( SECTION, 1.198 + "VAR1 = '1000'; VAR2 = 10, VAR1 /= VAR2; VAR1", 1.199 + 100, 1.200 + eval("VAR1 = '1000'; VAR2 = 10, VAR1 /= VAR2; VAR1") ); 1.201 +/* 1.202 + new TestCase( SECTION, "VAR1 = 10; VAR2 = '0XFF', VAR1 /= VAR2", 2550, eval("VAR1 = 10; VAR2 = '0XFF', VAR1 /= VAR2") ); 1.203 + new TestCase( SECTION, "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 /= VAR2", 2550, eval("VAR1 = '0XFF'; VAR2 = 0XA, VAR1 /= VAR2") ); 1.204 + 1.205 + new TestCase( SECTION, "VAR1 = '10'; VAR2 = '255', VAR1 /= VAR2", 2550, eval("VAR1 = '10'; VAR2 = '255', VAR1 /= VAR2") ); 1.206 + new TestCase( SECTION, "VAR1 = '10'; VAR2 = '0XFF', VAR1 /= VAR2", 2550, eval("VAR1 = '10'; VAR2 = '0XFF', VAR1 /= VAR2") ); 1.207 + new TestCase( SECTION, "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 /= VAR2", 2550, eval("VAR1 = '0XFF'; VAR2 = 0XA, VAR1 /= VAR2") ); 1.208 + 1.209 + // boolean cases 1.210 + new TestCase( SECTION, "VAR1 = true; VAR2 = false; VAR1 /= VAR2", 0, eval("VAR1 = true; VAR2 = false; VAR1 /= VAR2") ); 1.211 + new TestCase( SECTION, "VAR1 = true; VAR2 = true; VAR1 /= VAR2", 1, eval("VAR1 = true; VAR2 = true; VAR1 /= VAR2") ); 1.212 + 1.213 + // object cases 1.214 + new TestCase( SECTION, "VAR1 = new Boolean(true); VAR2 = 10; VAR1 /= VAR2;VAR1", 10, eval("VAR1 = new Boolean(true); VAR2 = 10; VAR1 /= VAR2; VAR1") ); 1.215 + new TestCase( SECTION, "VAR1 = new Number(11); VAR2 = 10; VAR1 /= VAR2; VAR1", 110, eval("VAR1 = new Number(11); VAR2 = 10; VAR1 /= VAR2; VAR1") ); 1.216 + 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") ); 1.217 + new TestCase( SECTION, "VAR1 = new String('15'); VAR2 = new String('0xF'); VAR1 /= VAR2", 255, eval("VAR1 = String('15'); VAR2 = new String('0xF'); VAR1 /= VAR2") ); 1.218 + 1.219 +*/ 1.220 + 1.221 +test(); 1.222 +