js/src/tests/ecma/Expressions/11.13.2-1.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-1.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-1";
    32 var VERSION = "ECMA_1";
    33 startTest();
    35 writeHeaderToLog( SECTION + " Compound Assignment: *=");
    38 // NaN cases
    40 new TestCase( SECTION,   
    41               "VAR1 = NaN; VAR2=1; VAR1 *= VAR2",      
    42               Number.NaN,
    43               eval("VAR1 = Number.NaN; VAR2=1; VAR1 *= VAR2") );
    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") );
    50 // number cases
    51 new TestCase( SECTION,   
    52               "VAR1 = 0; VAR2=1; VAR1 *= VAR2",        
    53               0,         
    54               eval("VAR1 = 0; VAR2=1; VAR1 *= VAR2") );
    56 new TestCase( SECTION,   
    57               "VAR1 = 0; VAR2=1; VAR1 *= VAR2;VAR1",   
    58               0,         
    59               eval("VAR1 = 0; VAR2=1; VAR1 *= VAR2;VAR1") );
    61 new TestCase( SECTION,   
    62               "VAR1 = 0xFF; VAR2 = 0xA, VAR1 *= VAR2",
    63               2550,     
    64               eval("VAR1 = 0XFF; VAR2 = 0XA, VAR1 *= VAR2") );
    66 // special multiplication cases
    68 new TestCase( SECTION,   
    69               "VAR1 = 0; VAR2= Infinity; VAR1 *= VAR2",   
    70               Number.NaN,     
    71               eval("VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR1 *= VAR2; VAR1") );
    73 new TestCase( SECTION,   
    74               "VAR1 = -0; VAR2= Infinity; VAR1 *= VAR2",  
    75               Number.NaN,     
    76               eval("VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR1 *= VAR2; VAR1") );
    78 new TestCase( SECTION,   
    79               "VAR1 = -0; VAR2= -Infinity; VAR1 *= VAR2", 
    80               Number.NaN,     
    81               eval("VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 *= VAR2; VAR1") );
    83 new TestCase( SECTION,   
    84               "VAR1 = 0; VAR2= -Infinity; VAR1 *= VAR2",  
    85               Number.NaN,     
    86               eval("VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 *= VAR2; VAR1") );
    88 new TestCase( SECTION,   
    89               "VAR1 = 0; VAR2= Infinity; VAR2 *= VAR1",   
    90               Number.NaN,     
    91               eval("VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR2 *= VAR1; VAR2") );
    93 new TestCase( SECTION,   
    94               "VAR1 = -0; VAR2= Infinity; VAR2 *= VAR1",  
    95               Number.NaN,     
    96               eval("VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR2 *= VAR1; VAR2") );
    98 new TestCase( SECTION,   
    99               "VAR1 = -0; VAR2= -Infinity; VAR2 *= VAR1", 
   100               Number.NaN,     
   101               eval("VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR2 *= VAR1; VAR2") );
   103 new TestCase( SECTION,   
   104               "VAR1 = 0; VAR2= -Infinity; VAR2 *= VAR1",  
   105               Number.NaN,     
   106               eval("VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR2 *= VAR1; VAR2") );
   108 new TestCase( SECTION,   
   109               "VAR1 = Infinity; VAR2= Infinity; VAR1 *= VAR2",  
   110               Number.POSITIVE_INFINITY,     
   111               eval("VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 *= VAR2; VAR1") );
   113 new TestCase( SECTION,   
   114               "VAR1 = Infinity; VAR2= -Infinity; VAR1 *= VAR2", 
   115               Number.NEGATIVE_INFINITY,     
   116               eval("VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 *= VAR2; VAR1") );
   118 new TestCase( SECTION,   
   119               "VAR1 =-Infinity; VAR2= Infinity; VAR1 *= VAR2",  
   120               Number.NEGATIVE_INFINITY,     
   121               eval("VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 *= VAR2; VAR1") );
   123 new TestCase( SECTION,   
   124               "VAR1 =-Infinity; VAR2=-Infinity; VAR1 *= VAR2",  
   125               Number.POSITIVE_INFINITY,     
   126               eval("VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 *= VAR2; VAR1") );
   128 // string cases
   129 new TestCase( SECTION,   
   130               "VAR1 = 10; VAR2 = '255', VAR1 *= VAR2",
   131               2550,      
   132               eval("VAR1 = 10; VAR2 = '255', VAR1 *= VAR2") );
   134 new TestCase( SECTION,   
   135               "VAR1 = '255'; VAR2 = 10, VAR1 *= VAR2",
   136               2550,      
   137               eval("VAR1 = '255'; VAR2 = 10, VAR1 *= VAR2") );
   139 new TestCase( SECTION,   
   140               "VAR1 = 10; VAR2 = '0XFF', VAR1 *= VAR2",
   141               2550,      
   142               eval("VAR1 = 10; VAR2 = '0XFF', VAR1 *= VAR2") );
   144 new TestCase( SECTION,   
   145               "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 *= VAR2",
   146               2550,     
   147               eval("VAR1 = '0XFF'; VAR2 = 0XA, VAR1 *= VAR2") );
   149 new TestCase( SECTION,   
   150               "VAR1 = '10'; VAR2 = '255', VAR1 *= VAR2",
   151               2550,     
   152               eval("VAR1 = '10'; VAR2 = '255', VAR1 *= VAR2") );
   154 new TestCase( SECTION,   
   155               "VAR1 = '10'; VAR2 = '0XFF', VAR1 *= VAR2",
   156               2550,    
   157               eval("VAR1 = '10'; VAR2 = '0XFF', VAR1 *= VAR2") );
   159 new TestCase( SECTION,   
   160               "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 *= VAR2",
   161               2550,     
   162               eval("VAR1 = '0XFF'; VAR2 = 0XA, VAR1 *= VAR2") );
   164 // boolean cases
   165 new TestCase( SECTION,   
   166               "VAR1 = true; VAR2 = false; VAR1 *= VAR2",   
   167               0,     
   168               eval("VAR1 = true; VAR2 = false; VAR1 *= VAR2") );
   170 new TestCase( SECTION,   
   171               "VAR1 = true; VAR2 = true; VAR1 *= VAR2",   
   172               1,     
   173               eval("VAR1 = true; VAR2 = true; VAR1 *= VAR2") );
   175 // object cases
   176 new TestCase( SECTION,   
   177               "VAR1 = new Boolean(true); VAR2 = 10; VAR1 *= VAR2;VAR1",   
   178               10,     
   179               eval("VAR1 = new Boolean(true); VAR2 = 10; VAR1 *= VAR2; VAR1") );
   181 new TestCase( SECTION,   
   182               "VAR1 = new Number(11); VAR2 = 10; VAR1 *= VAR2; VAR1",   
   183               110,     
   184               eval("VAR1 = new Number(11); VAR2 = 10; VAR1 *= VAR2; VAR1") );
   186 new TestCase( SECTION,   
   187               "VAR1 = new Number(11); VAR2 = new Number(10); VAR1 *= VAR2",   
   188               110,     
   189               eval("VAR1 = new Number(11); VAR2 = new Number(10); VAR1 *= VAR2") );
   191 new TestCase( SECTION,   
   192               "VAR1 = new String('15'); VAR2 = new String('0xF'); VAR1 *= VAR2",   
   193               225,     
   194               eval("VAR1 = String('15'); VAR2 = new String('0xF'); VAR1 *= VAR2") );
   196 test();

mercurial