js/src/tests/ecma/Expressions/11.13.2-2.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-2js
     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-2";
    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 new TestCase( SECTION,   
    51               "VAR1 = NaN; VAR2=0; VAR1 /= VAR2",      
    52               Number.NaN,
    53               eval("VAR1 = Number.NaN; VAR2=0; VAR1 /= VAR2") );
    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") );
    60 new TestCase( SECTION,   
    61               "VAR1 = 0; VAR2=NaN; VAR1 /= VAR2",      
    62               Number.NaN,
    63               eval("VAR1 = 0; VAR2=Number.NaN; VAR1 /= VAR2") );
    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") );
    70 // number cases
    71 new TestCase( SECTION,   
    72               "VAR1 = 0; VAR2=1; VAR1 /= VAR2",        
    73               0,         
    74               eval("VAR1 = 0; VAR2=1; VAR1 /= VAR2") );
    76 new TestCase( SECTION,   
    77               "VAR1 = 0; VAR2=1; VAR1 /= VAR2;VAR1",   
    78               0,         
    79               eval("VAR1 = 0; VAR2=1; VAR1 /= VAR2;VAR1") );
    81 new TestCase( SECTION,   
    82               "VAR1 = 0xFF; VAR2 = 0xA, VAR1 /= VAR2",
    83               25.5,     
    84               eval("VAR1 = 0XFF; VAR2 = 0XA, VAR1 /= VAR2") );
    86 // special division cases
    88 new TestCase( SECTION,   
    89               "VAR1 = 0; VAR2= Infinity; VAR1 /= VAR2",   
    90               0,     
    91               eval("VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR1 /= VAR2; VAR1") );
    93 new TestCase( SECTION,   
    94               "VAR1 = -0; VAR2= Infinity; VAR1 /= VAR2",  
    95               0,     
    96               eval("VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR1 /= VAR2; VAR1") );
    98 new TestCase( SECTION,   
    99               "VAR1 = -0; VAR2= -Infinity; VAR1 /= VAR2", 
   100               0,     
   101               eval("VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 /= VAR2; VAR1") );
   103 new TestCase( SECTION,   
   104               "VAR1 = 0; VAR2= -Infinity; VAR1 /= VAR2",  
   105               0,     
   106               eval("VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 /= VAR2; VAR1") );
   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") );
   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") );
   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") );
   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") );
   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") );
   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") );
   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") );
   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") );
   148 new TestCase( SECTION,   
   149               "VAR1 = 0; VAR2= 0; VAR1 /= VAR2",   
   150               Number.NaN,     
   151               eval("VAR1 = 0; VAR2 = 0; VAR1 /= VAR2; VAR1") );
   153 new TestCase( SECTION,   
   154               "VAR1 = 0; VAR2= -0; VAR1 /= VAR2",  
   155               Number.NaN,    
   156               eval("VAR1 = 0; VAR2 = -0; VAR1 /= VAR2; VAR1") );
   158 new TestCase( SECTION,   
   159               "VAR1 = -0; VAR2= 0; VAR1 /= VAR2",  
   160               Number.NaN,     
   161               eval("VAR1 = -0; VAR2 = 0; VAR1 /= VAR2; VAR1") );
   163 new TestCase( SECTION,   
   164               "VAR1 = -0; VAR2= -0; VAR1 /= VAR2", 
   165               Number.NaN,     
   166               eval("VAR1 = -0; VAR2 = -0; VAR1 /= VAR2; VAR1") );
   168 new TestCase( SECTION,   
   169               "VAR1 = 1; VAR2= 0; VAR1 /= VAR2",   
   170               Number.POSITIVE_INFINITY,     
   171               eval("VAR1 = 1; VAR2 = 0; VAR1 /= VAR2; VAR1") );
   173 new TestCase( SECTION,   
   174               "VAR1 = 1; VAR2= -0; VAR1 /= VAR2",  
   175               Number.NEGATIVE_INFINITY,     
   176               eval("VAR1 = 1; VAR2 = -0; VAR1 /= VAR2; VAR1") );
   178 new TestCase( SECTION,   
   179               "VAR1 = -1; VAR2= 0; VAR1 /= VAR2",  
   180               Number.NEGATIVE_INFINITY,     
   181               eval("VAR1 = -1; VAR2 = 0; VAR1 /= VAR2; VAR1") );
   183 new TestCase( SECTION,   
   184               "VAR1 = -1; VAR2= -0; VAR1 /= VAR2", 
   185               Number.POSITIVE_INFINITY,     
   186               eval("VAR1 = -1; VAR2 = -0; VAR1 /= VAR2; VAR1") );
   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") );
   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") );
   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") );
   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") );
   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") );
   216 */
   218 test();

mercurial