|
1 // Copyright 2009 the Sputnik authors. All rights reserved. |
|
2 // This code is governed by the BSD license found in the LICENSE file. |
|
3 |
|
4 /** |
|
5 * Operator ++x uses [[Default Value]] |
|
6 * |
|
7 * @path ch11/11.4/11.4.4/S11.4.4_A2.2_T1.js |
|
8 * @description If Type(value) is Object, evaluate ToPrimitive(value, Number) |
|
9 */ |
|
10 |
|
11 //CHECK#1 |
|
12 var object = {valueOf: function() {return 1}}; |
|
13 if (++object !== 1 + 1) { |
|
14 $ERROR('#1: var object = {valueOf: function() {return 1}}; ++object === 1 + 1. Actual: ' + (++object)); |
|
15 } else { |
|
16 if (object !== 1 + 1) { |
|
17 $ERROR('#1: var object = {valueOf: function() {return 1}}; ++object; object === 1 + 1. Actual: ' + (object)); |
|
18 } |
|
19 } |
|
20 |
|
21 //CHECK#2 |
|
22 var object = {valueOf: function() {return 1}, toString: function() {return 0}}; |
|
23 if (++object !== 1 + 1) { |
|
24 $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; ++object === 1 + 1. Actual: ' + (++object)); |
|
25 } else { |
|
26 if (object !== 1 + 1) { |
|
27 $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; ++object; object === 1 + 1. Actual: ' + (object)); |
|
28 } |
|
29 } |
|
30 |
|
31 //CHECK#3 |
|
32 var object = {valueOf: function() {return 1}, toString: function() {return {}}}; |
|
33 if (++object !== 1 + 1) { |
|
34 $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; ++object === 1 + 1. Actual: ' + (++object)); |
|
35 } else { |
|
36 if (object !== 1 + 1) { |
|
37 $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; ++object; object === 1 + 1. Actual: ' + (object)); |
|
38 } |
|
39 } |
|
40 |
|
41 //CHECK#4 |
|
42 try { |
|
43 var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; |
|
44 if (++object !== 1 + 1) { |
|
45 $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ++object === 1 + 1. Actual: ' + (++object)); |
|
46 } else { |
|
47 if (object !== 1 + 1) { |
|
48 $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ++object; object === 1 + 1. Actual: ' + (object)); |
|
49 } |
|
50 } |
|
51 } |
|
52 catch (e) { |
|
53 if (e === "error") { |
|
54 $ERROR('#4.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ++object not throw "error"'); |
|
55 } else { |
|
56 $ERROR('#4.3: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ++object not throw Error. Actual: ' + (e)); |
|
57 } |
|
58 } |
|
59 |
|
60 //CHECK#5 |
|
61 var object = {toString: function() {return 1}}; |
|
62 if (++object !== 1 + 1) { |
|
63 $ERROR('#5.1: var object = {toString: function() {return 1}}; ++object === 1 + 1. Actual: ' + (++object)); |
|
64 } else { |
|
65 if (object !== 1 + 1) { |
|
66 $ERROR('#5.2: var object = {toString: function() {return 1}}; ++object; object === 1 + 1. Actual: ' + (object)); |
|
67 } |
|
68 } |
|
69 |
|
70 |
|
71 //CHECK#6 |
|
72 var object = {valueOf: function() {return {}}, toString: function() {return 1}} |
|
73 if (++object !== 1 + 1) { |
|
74 $ERROR('#6.1: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; ++object === 1 + 1. Actual: ' + (++object)); |
|
75 } else { |
|
76 if (object !== 1 + 1) { |
|
77 $ERROR('#6.2: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; ++object; object === 1 + 1. Actual: ' + (object)); |
|
78 } |
|
79 } |
|
80 |
|
81 //CHECK#7 |
|
82 try { |
|
83 var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; |
|
84 ++object; |
|
85 $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; ++object throw "error". Actual: ' + (++object)); |
|
86 } |
|
87 catch (e) { |
|
88 if (e !== "error") { |
|
89 $ERROR('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; ++object throw "error". Actual: ' + (e)); |
|
90 } |
|
91 } |
|
92 |
|
93 //CHECK#8 |
|
94 try { |
|
95 var object = {valueOf: function() {return {}}, toString: function() {return {}}}; |
|
96 ++object; |
|
97 $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; ++object throw TypeError. Actual: ' + (++object)); |
|
98 } |
|
99 catch (e) { |
|
100 if ((e instanceof TypeError) !== true) { |
|
101 $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; ++object throw TypeError. Actual: ' + (e)); |
|
102 } |
|
103 } |
|
104 |