js/src/tests/ecma/Expressions/11.13.2-3.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     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/. */
     7 /**
     8    File Name:          11.13.2-4.js
     9    ECMA Section:       11.13.2 Compound Assignment: %=
    10    Description:
    12    *= /= %= += -= <<= >>= >>>= &= ^= |=
    14    11.13.2 Compound assignment ( op= )
    16    The production AssignmentExpression :
    17    LeftHandSideExpression @ = AssignmentExpression, where @ represents one of
    18    the operators indicated above, is evaluated as follows:
    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).
    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();
    35 writeHeaderToLog( SECTION + " Compound Assignment: +=");
    37 // If either operand is NaN,  result is NaN
    39 new TestCase( SECTION,   
    40               "VAR1 = NaN; VAR2=1; VAR1 %= VAR2",      
    41               Number.NaN,
    42               eval("VAR1 = Number.NaN; VAR2=1; VAR1 %= VAR2") );
    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") );
    49 new TestCase( SECTION,   
    50               "VAR1 = NaN; VAR2=0; VAR1 %= VAR2",      
    51               Number.NaN,
    52               eval("VAR1 = Number.NaN; VAR2=0; VAR1 %= VAR2") );
    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") );
    59 new TestCase( SECTION,   
    60               "VAR1 = 0; VAR2=NaN; VAR1 %= VAR2",      
    61               Number.NaN,
    62               eval("VAR1 = 0; VAR2=Number.NaN; VAR1 %= VAR2") );
    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") );
    69 // if the dividend is infinity or the divisor is zero or both, the result is NaN
    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") );
    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") );
    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") );
    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") );
    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") );
    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") );
   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") );
   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") );
   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") );
   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") );
   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") );
   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") );
   131 new TestCase( SECTION,   
   132               "VAR1 = 0; VAR2= 0; VAR1 %= VAR2",   
   133               Number.NaN,     
   134               eval("VAR1 = 0; VAR2 = 0; VAR1 %= VAR2; VAR1") );
   136 new TestCase( SECTION,   
   137               "VAR1 = 0; VAR2= -0; VAR1 %= VAR2",  
   138               Number.NaN,     
   139               eval("VAR1 = 0; VAR2 = -0; VAR1 %= VAR2; VAR1") );
   141 new TestCase( SECTION,   
   142               "VAR1 = -0; VAR2= 0; VAR1 %= VAR2",  
   143               Number.NaN,     
   144               eval("VAR1 = -0; VAR2 = 0; VAR1 %= VAR2; VAR1") );
   146 new TestCase( SECTION,   
   147               "VAR1 = -0; VAR2= -0; VAR1 %= VAR2", 
   148               Number.NaN,     
   149               eval("VAR1 = -0; VAR2 = -0; VAR1 %= VAR2; VAR1") );
   151 new TestCase( SECTION,   
   152               "VAR1 = 1; VAR2= 0; VAR1 %= VAR2",   
   153               Number.NaN,     
   154               eval("VAR1 = 1; VAR2 = 0; VAR1 %= VAR2; VAR1") );
   156 new TestCase( SECTION,   
   157               "VAR1 = 1; VAR2= -0; VAR1 %= VAR2",  
   158               Number.NaN,     
   159               eval("VAR1 = 1; VAR2 = -0; VAR1 %= VAR2; VAR1") );
   161 new TestCase( SECTION,   
   162               "VAR1 = -1; VAR2= 0; VAR1 %= VAR2",  
   163               Number.NaN,     
   164               eval("VAR1 = -1; VAR2 = 0; VAR1 %= VAR2; VAR1") );
   166 new TestCase( SECTION,   
   167               "VAR1 = -1; VAR2= -0; VAR1 %= VAR2", 
   168               Number.NaN,     
   169               eval("VAR1 = -1; VAR2 = -0; VAR1 %= VAR2; VAR1") );
   171 // if the dividend is finite and the divisor is an infinity, the result equals the dividend.
   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") );
   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") );
   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") );
   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") );
   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") );
   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") );
   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") );
   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") );
   213 // if the dividend is a zero and the divisor is finite, the result is the same as the dividend
   215 new TestCase( SECTION,   
   216               "VAR1 = 0; VAR2= 1; VAR1 %= VAR2; VAR1",   
   217               0,   
   218               eval("VAR1 = 0; VAR2 = 1; VAR1 %= VAR2; VAR1") );
   220 new TestCase( SECTION,   
   221               "VAR1 = -0; VAR2= 1; VAR1 %= VAR2; VAR1",  
   222               -0,  
   223               eval("VAR1 = -0; VAR2 = 1; VAR1 %= VAR2; VAR1") );
   225 new TestCase( SECTION,   
   226               "VAR1 = -0; VAR2= -1; VAR1 %= VAR2; VAR1", 
   227               -0,  
   228               eval("VAR1 = -0; VAR2 = -1; VAR1 %= VAR2; VAR1") );
   230 new TestCase( SECTION,   
   231               "VAR1 = 0; VAR2= -1; VAR1 %= VAR2; VAR1",  
   232               0,   
   233               eval("VAR1 = 0; VAR2 = -1; VAR1 %= VAR2; VAR1") );
   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") );
   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") );
   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") );
   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") );
   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") );
   263 */
   265 test();

mercurial