2011-09-07 08:35:18 +02:00
// Copyright 2009 the Sputnik authors. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
2014-07-22 01:09:02 +02:00
/ * - - -
info : Operator x ++ uses [ [ Default Value ] ]
2014-07-25 00:41:42 +02:00
es5id : 11.3 . 1_ A2 . 2_ T1
2014-07-22 01:09:02 +02:00
description : If Type ( value ) is Object , evaluate ToPrimitive ( value , Number )
-- - * /
2011-09-07 08:35:18 +02:00
//CHECK#1
var object = { valueOf : function ( ) { return 1 } } ;
var y = object ++ ;
if ( y !== 1 ) {
2021-07-28 22:48:39 +02:00
throw new Test262Error ( '#1: var object = {valueOf: function() {return 1}}; var y = object++; y === 1. Actual: ' + ( y ) ) ;
2011-09-07 08:35:18 +02:00
} else {
if ( object !== 1 + 1 ) {
2021-07-28 22:48:39 +02:00
throw new Test262Error ( '#1: var object = {valueOf: function() {return 1}}; object++; object === 1 + 1. Actual: ' + ( object ) ) ;
2011-09-07 08:35:18 +02:00
}
}
//CHECK#2
var object = { valueOf : function ( ) { return 1 } , toString : function ( ) { return 0 } } ;
var y = object ++ ;
if ( y !== 1 ) {
2021-07-28 22:48:39 +02:00
throw new Test262Error ( '#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; var y = object++; y === 1. Actual: ' + ( y ) ) ;
2011-09-07 08:35:18 +02:00
} else {
if ( object !== 1 + 1 ) {
2021-07-28 22:48:39 +02:00
throw new Test262Error ( '#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; object++; object === 1 + 1. Actual: ' + ( object ) ) ;
2011-09-07 08:35:18 +02:00
}
}
//CHECK#3
var object = { valueOf : function ( ) { return 1 } , toString : function ( ) { return { } } } ;
var y = object ++ ;
if ( y !== 1 ) {
2021-07-28 22:48:39 +02:00
throw new Test262Error ( '#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; var y = object++; y === 1. Actual: ' + ( y ) ) ;
2011-09-07 08:35:18 +02:00
} else {
if ( object !== 1 + 1 ) {
2021-07-28 22:48:39 +02:00
throw new Test262Error ( '#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; object++; object === 1 + 1. Actual: ' + ( object ) ) ;
2011-09-07 08:35:18 +02:00
}
}
//CHECK#4
try {
var object = { valueOf : function ( ) { return 1 } , toString : function ( ) { throw "error" } } ;
var y = object ++ ;
if ( y !== 1 ) {
2021-07-28 22:48:39 +02:00
throw new Test262Error ( '#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; var y = object++; y === 1. Actual: ' + ( y ) ) ;
2011-09-07 08:35:18 +02:00
} else {
if ( object !== 1 + 1 ) {
2021-07-28 22:48:39 +02:00
throw new Test262Error ( '#4.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; object++; object === 1 + 1. Actual: ' + ( object ) ) ;
2011-09-07 08:35:18 +02:00
}
}
}
catch ( e ) {
if ( e === "error" ) {
2021-07-28 22:48:39 +02:00
throw new Test262Error ( '#4.3: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; var y = object++; y not throw "error"' ) ;
2011-09-07 08:35:18 +02:00
} else {
2021-07-28 22:48:39 +02:00
throw new Test262Error ( '#4.4: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; var y = object++; y not throw Error. Actual: ' + ( e ) ) ;
2011-09-07 08:35:18 +02:00
}
}
//CHECK#5
var object = { toString : function ( ) { return 1 } } ;
var y = object ++ ;
if ( y !== 1 ) {
2021-07-28 22:48:39 +02:00
throw new Test262Error ( '#5.1: var object = {toString: function() {return 1}}; var y = object++; y === 1. Actual: ' + ( y ) ) ;
2011-09-07 08:35:18 +02:00
} else {
if ( object !== 1 + 1 ) {
2021-07-28 22:48:39 +02:00
throw new Test262Error ( '#5.2: var object = {toString: function() {return 1}}; object++; object === 1 + 1. Actual: ' + ( object ) ) ;
2011-09-07 08:35:18 +02:00
}
}
//CHECK#6
var object = { valueOf : function ( ) { return { } } , toString : function ( ) { return 1 } }
var y = object ++ ;
if ( y !== 1 ) {
2021-07-28 22:48:39 +02:00
throw new Test262Error ( '#6.1: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; var y = object++; y === 1. Actual: ' + ( y ) ) ;
2011-09-07 08:35:18 +02:00
} else {
if ( object !== 1 + 1 ) {
2021-07-28 22:48:39 +02:00
throw new Test262Error ( '#6.2: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; object++; object === 1 + 1. Actual: ' + ( object ) ) ;
2011-09-07 08:35:18 +02:00
}
}
//CHECK#7
try {
var object = { valueOf : function ( ) { throw "error" } , toString : function ( ) { return 1 } } ;
var y = object ++ ;
2021-07-28 22:48:39 +02:00
throw new Test262Error ( '#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; object++ throw "error". Actual: ' + ( y ) ) ;
2011-09-07 08:35:18 +02:00
}
catch ( e ) {
if ( e !== "error" ) {
2021-07-28 22:48:39 +02:00
throw new Test262Error ( '#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; object++ throw "error". Actual: ' + ( e ) ) ;
2011-09-07 08:35:18 +02:00
}
}
//CHECK#8
try {
var object = { valueOf : function ( ) { return { } } , toString : function ( ) { return { } } } ;
var y = object ++ ;
2021-07-28 22:48:39 +02:00
throw new Test262Error ( '#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; object++ throw TypeError. Actual: ' + ( y ) ) ;
2011-09-07 08:35:18 +02:00
}
catch ( e ) {
if ( ( e instanceof TypeError ) !== true ) {
2021-07-28 22:48:39 +02:00
throw new Test262Error ( '#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; object++ throw TypeError. Actual: ' + ( e ) ) ;
2011-09-07 08:35:18 +02:00
}
}