~ubuntu-branches/ubuntu/saucy/mozjs17/saucy

« back to all changes in this revision

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

  • Committer: Package Import Robot
  • Author(s): Rico Tzschichholz
  • Date: 2013-05-25 12:24:23 UTC
  • Revision ID: package-import@ubuntu.com-20130525122423-zmxucrhtensw90xy
Tags: upstream-17.0.0
ImportĀ upstreamĀ versionĀ 17.0.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-4.js
 
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-4";
 
32
var VERSION = "ECMA_1";
 
33
startTest();
 
34
 
 
35
writeHeaderToLog( SECTION + " Compound Assignment: +=");
 
36
 
 
37
// If either operand is NaN,  result is NaN
 
38
 
 
39
new TestCase( SECTION,    "VAR1 = NaN; VAR2=1; VAR1 += VAR2",       Number.NaN, eval("VAR1 = Number.NaN; VAR2=1; VAR1 += VAR2") );
 
40
new TestCase( SECTION,    "VAR1 = NaN; VAR2=1; VAR1 += VAR2; VAR1", Number.NaN, eval("VAR1 = Number.NaN; VAR2=1; VAR1 += VAR2; VAR1") );
 
41
new TestCase( SECTION,    "VAR1 = NaN; VAR2=0; VAR1 += VAR2",       Number.NaN, eval("VAR1 = Number.NaN; VAR2=0; VAR1 += VAR2") );
 
42
new TestCase( SECTION,    "VAR1 = NaN; VAR2=0; VAR1 += VAR2; VAR1", Number.NaN, eval("VAR1 = Number.NaN; VAR2=0; VAR1 += VAR2; VAR1") );
 
43
new TestCase( SECTION,    "VAR1 = 0; VAR2=NaN; VAR1 += VAR2",       Number.NaN, eval("VAR1 = 0; VAR2=Number.NaN; VAR1 += VAR2") );
 
44
new TestCase( SECTION,    "VAR1 = 0; VAR2=NaN; VAR1 += VAR2; VAR1", Number.NaN, eval("VAR1 = 0; VAR2=Number.NaN; VAR1 += VAR2; VAR1") );
 
45
 
 
46
// the sum of two Infinities the same sign is the infinity of that sign
 
47
// the sum of two Infinities of opposite sign is NaN
 
48
 
 
49
new TestCase( SECTION,    "VAR1 = Infinity; VAR2= Infinity; VAR1 += VAR2; VAR1",   Number.POSITIVE_INFINITY,        eval("VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 += VAR2; VAR1") );
 
50
new TestCase( SECTION,    "VAR1 = Infinity; VAR2= -Infinity; VAR1 += VAR2; VAR1",  Number.NaN,                      eval("VAR1 = Number.POSITIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 += VAR2; VAR1") );
 
51
new TestCase( SECTION,    "VAR1 =-Infinity; VAR2= Infinity; VAR1 += VAR2; VAR1",   Number.NaN,                      eval("VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.POSITIVE_INFINITY; VAR1 += VAR2; VAR1") );
 
52
new TestCase( SECTION,    "VAR1 =-Infinity; VAR2=-Infinity; VAR1 += VAR2; VAR1",   Number.NEGATIVE_INFINITY,        eval("VAR1 = Number.NEGATIVE_INFINITY; VAR2 = Number.NEGATIVE_INFINITY; VAR1 += VAR2; VAR1") );
 
53
 
 
54
// the sum of an infinity and a finite value is equal to the infinite operand
 
55
 
 
56
new TestCase( SECTION,    "VAR1 = 0; VAR2= Infinity; VAR1 += VAR2;VAR1",    Number.POSITIVE_INFINITY,      eval("VAR1 = 0; VAR2 = Number.POSITIVE_INFINITY; VAR1 += VAR2; VAR1") );
 
57
new TestCase( SECTION,    "VAR1 = -0; VAR2= Infinity; VAR1 += VAR2;VAR1",   Number.POSITIVE_INFINITY,      eval("VAR1 = -0; VAR2 = Number.POSITIVE_INFINITY; VAR1 += VAR2; VAR1") );
 
58
new TestCase( SECTION,    "VAR1 = -0; VAR2= -Infinity; VAR1 += VAR2;VAR1",  Number.NEGATIVE_INFINITY,      eval("VAR1 = -0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 += VAR2; VAR1") );
 
59
new TestCase( SECTION,    "VAR1 = 0; VAR2= -Infinity; VAR1 += VAR2;VAR1",   Number.NEGATIVE_INFINITY,      eval("VAR1 = 0; VAR2 = Number.NEGATIVE_INFINITY; VAR1 += VAR2; VAR1") );
 
60
 
 
61
// the sum of two negative zeros is -0. the sum of two positive zeros, or of two zeros of opposite sign, is +0
 
62
 
 
63
new TestCase( SECTION,    "VAR1 = 0; VAR2= 0; VAR1 += VAR2",    0,      eval("VAR1 = 0; VAR2 = 0; VAR1 += VAR2; VAR1") );
 
64
new TestCase( SECTION,    "VAR1 = 0; VAR2= -0; VAR1 += VAR2",   0,      eval("VAR1 = 0; VAR2 = -0; VAR1 += VAR2; VAR1") );
 
65
new TestCase( SECTION,    "VAR1 = -0; VAR2= 0; VAR1 += VAR2",   0,      eval("VAR1 = -0; VAR2 = 0; VAR1 += VAR2; VAR1") );
 
66
new TestCase( SECTION,    "VAR1 = -0; VAR2= -0; VAR1 += VAR2",  -0,      eval("VAR1 = -0; VAR2 = -0; VAR1 += VAR2; VAR1") );
 
67
 
 
68
//  the sum of a zero and a nonzero finite value is eqal to the nonzero operand
 
69
 
 
70
new TestCase( SECTION,    "VAR1 = 0; VAR2= 1; VAR2 += VAR1; VAR2",    1,      eval("VAR1 = 0; VAR2 = 1; VAR2 += VAR1; VAR2") );
 
71
new TestCase( SECTION,    "VAR1 = -0; VAR2= 1; VAR2 += VAR1; VAR2",   1,      eval("VAR1 = -0; VAR2 = 1; VAR2 += VAR1; VAR2") );
 
72
new TestCase( SECTION,    "VAR1 = -0; VAR2= -1; VAR2 += VAR1; VAR2",  -1,      eval("VAR1 = -0; VAR2 = -1; VAR2 += VAR1; VAR2") );
 
73
new TestCase( SECTION,    "VAR1 = 0; VAR2= -1; VAR2 += VAR1; VAR2",   -1,      eval("VAR1 = 0; VAR2 = -1; VAR2 += VAR1; VAR2") );
 
74
 
 
75
// the sum of a zero and a nozero finite value is equal to the nonzero operand.
 
76
new TestCase( SECTION,    "VAR1 = 0; VAR2=1; VAR1 += VAR2",         1,          eval("VAR1 = 0; VAR2=1; VAR1 += VAR2") );
 
77
new TestCase( SECTION,    "VAR1 = 0; VAR2=1; VAR1 += VAR2;VAR1",    1,          eval("VAR1 = 0; VAR2=1; VAR1 += VAR2;VAR1") );
 
78
 
 
79
// the sum of two nonzero finite values of the same magnitude and opposite sign is +0
 
80
new TestCase( SECTION,    "VAR1 = Number.MAX_VALUE; VAR2= -Number.MAX_VALUE; VAR1 += VAR2; VAR1",    0,  eval("VAR1 = Number.MAX_VALUE; VAR2= -Number.MAX_VALUE; VAR1 += VAR2; VAR1") );
 
81
new TestCase( SECTION,    "VAR1 = Number.MIN_VALUE; VAR2= -Number.MIN_VALUE; VAR1 += VAR2; VAR1",   0,  eval("VAR1 = Number.MIN_VALUE; VAR2= -Number.MIN_VALUE; VAR1 += VAR2; VAR1") );
 
82
 
 
83
/*
 
84
  new TestCase( SECTION,    "VAR1 = 10; VAR2 = '0XFF', VAR1 += VAR2", 2550,       eval("VAR1 = 10; VAR2 = '0XFF', VAR1 += VAR2") );
 
85
  new TestCase( SECTION,    "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 += VAR2", 2550,      eval("VAR1 = '0XFF'; VAR2 = 0XA, VAR1 += VAR2") );
 
86
 
 
87
  new TestCase( SECTION,    "VAR1 = '10'; VAR2 = '255', VAR1 += VAR2", 2550,      eval("VAR1 = '10'; VAR2 = '255', VAR1 += VAR2") );
 
88
  new TestCase( SECTION,    "VAR1 = '10'; VAR2 = '0XFF', VAR1 += VAR2", 2550,     eval("VAR1 = '10'; VAR2 = '0XFF', VAR1 += VAR2") );
 
89
  new TestCase( SECTION,    "VAR1 = '0xFF'; VAR2 = 0xA, VAR1 += VAR2", 2550,      eval("VAR1 = '0XFF'; VAR2 = 0XA, VAR1 += VAR2") );
 
90
 
 
91
  // boolean cases
 
92
  new TestCase( SECTION,    "VAR1 = true; VAR2 = false; VAR1 += VAR2",    0,      eval("VAR1 = true; VAR2 = false; VAR1 += VAR2") );
 
93
  new TestCase( SECTION,    "VAR1 = true; VAR2 = true; VAR1 += VAR2",    1,      eval("VAR1 = true; VAR2 = true; VAR1 += VAR2") );
 
94
 
 
95
  // object cases
 
96
  new TestCase( SECTION,    "VAR1 = new Boolean(true); VAR2 = 10; VAR1 += VAR2;VAR1",    10,      eval("VAR1 = new Boolean(true); VAR2 = 10; VAR1 += VAR2; VAR1") );
 
97
  new TestCase( SECTION,    "VAR1 = new Number(11); VAR2 = 10; VAR1 += VAR2; VAR1",    110,      eval("VAR1 = new Number(11); VAR2 = 10; VAR1 += VAR2; VAR1") );
 
98
  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") );
 
99
  new TestCase( SECTION,    "VAR1 = new String('15'); VAR2 = new String('0xF'); VAR1 += VAR2",    255,      eval("VAR1 = String('15'); VAR2 = new String('0xF'); VAR1 += VAR2") );
 
100
 
 
101
*/
 
102
 
 
103
test();