aboutsummaryrefslogtreecommitdiffstats
path: root/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions
diff options
context:
space:
mode:
Diffstat (limited to 'external/contributions/Google/sputniktests/tests/Conformance/11_Expressions')
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A1.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.5.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A1.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.2_T1.js71
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.5.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A1.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T3.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.5.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A1.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T1.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T4.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T2.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T3.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A1.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T1.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T4.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T1.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T2.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T3.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T1.js48
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T5.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T6.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A1.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T3.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A3.1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A3.2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A4_T1.js17
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A4_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T10.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T11.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T2.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T3.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T4.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T5.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T6.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T7.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T8.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T9.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.10.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.11.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.3.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.4.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.5.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.6.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.7.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.8.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.9.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.10.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.11.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.4.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.5.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.6.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.7.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.8.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.9.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.10.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.11.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.5.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.6.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.7.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.8.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.9.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T10.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T11.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T3.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T5.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T6.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T7.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T8.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T9.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T10.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T11.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T3.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T5.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T6.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T7.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T8.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T9.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T10.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T11.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T3.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T5.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T6.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T7.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T8.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T9.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.5.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.7.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.5.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.7.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.5.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.7.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.5.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.7.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.5.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.7.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.4.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.2.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.5.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.6.js77
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.7.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.5.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.7.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.5.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.7.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.5.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.7.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.5.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.7.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.1.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.2.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.3.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.1.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.2.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.5.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.6.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.7.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.8.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.9.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A1.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T1.js53
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A3.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A1.js12
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A3.1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A3.2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A4.1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A4.2.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.2_Identifier_Reference/S11.1.2_A1_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.2_Identifier_Reference/S11.1.2_A1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.1.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.3.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.4.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.5.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.6.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.7.js56
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A2.js127
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.1.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.2.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.3.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.4.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A2.js93
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.3.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T4.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T5.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T6.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A1.1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A1.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T2.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T3.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T4.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T5.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T3.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T4.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T5.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T6.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T8.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T9.js100
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A1.1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A1.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T1.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T2.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T3.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T4.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T5.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T1.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T2.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T3.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T4.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T5.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T1.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T3.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T4.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T5.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T1.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T2.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T3.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T4.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T5.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.1_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.1_T2.js28
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.2_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.2_T2.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.3_T1.js15
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T1.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T2.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T4.js33
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T3.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T4.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.2_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T1.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T3.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.2_T1.js109
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T5.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T5.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T1.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T3.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T4.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.2_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T1.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T3.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.2_T1.js109
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T5.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T5.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.2_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.2_T2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.3.js60
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A4.js18
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A2_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A2_T2.js13
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T4.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T5.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T6.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A2_T1.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A2_T2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.3.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.4.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.5.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.6.js72
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.7.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T1.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T3.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.2_T1.js103
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T5.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T4.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T5.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T1.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T3.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.2_T1.js103
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T1.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T2.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T4.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T5.js23
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T3.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T4.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T5.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.1_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.2_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T3.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.1_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.2_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T1.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T3.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A4.1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A4.2.js32
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.1_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.2_T1.js78
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T2.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T3.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.1_T1.js38
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.2_T1.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T2.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T3.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T4.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T5.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.5.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.2.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T2.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T3.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T7.js57
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T8.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.5.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T1.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T1.2.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T10.js58
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T5.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T6.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T8.js63
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T9.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.5.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T1.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T1.2.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T2.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T3.js69
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T4.js89
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T5.js103
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T6.js81
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T7.js73
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T2.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T3.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.5.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T1.1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T1.2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.2.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T1.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T3.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T4.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T5.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T6.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T7.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.5.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T2.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T3.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T4.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T5.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T6.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T7.js36
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.5.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T1.js2570
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T2.js2571
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T3.js2570
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T4.js2570
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A5.1_T1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A5.2_T1.js329
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.5.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T1.js2570
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T2.js2570
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T3.js2570
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T4.js2565
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A5.1_T1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A5.2_T1.js329
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.3.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.5.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T1.js2570
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T2.js2570
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T3.js2650
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T4.js2650
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A5.1_T1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A5.2_T1.js330
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.2_T1.1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.2_T1.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.1.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.10.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.11.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.12_T1.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.12_T2.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.2.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.3.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.4.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.5.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.6.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.7.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.9.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.2_T1.1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.2_T1.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.1.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.10.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.11.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.12_T1.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.12_T2.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.2.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.3.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.4.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.5.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.6.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.7.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.9.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.2_T1.1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.2_T1.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.1.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.10.js41
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.11.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.12_T1.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.12_T2.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.2.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.3.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.4.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.5.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.6.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.7.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.9.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.2_T1.js70
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.3_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.2.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.2.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.3.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.4.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.5.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.6.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.7.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.8.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.9.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.2_T1.1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.2_T1.2.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.1.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.10.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.11.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.12_T1.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.12_T2.js44
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.2.js50
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.3.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.4.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.5.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.6.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.7.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.8.js40
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.9.js51
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A3.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T1.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T3.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A5_T1.js46
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A5_T2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T1.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T4.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T1.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T3.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T1.js34
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A3.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A4.js37
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.2.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.3.js20
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.1_T1.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.1_T2.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.3.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.1.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.3.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.2_T1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.2_T2.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.1.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.3.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.4.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.5.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.6.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.7.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.8.js75
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.9.js75
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T1.js42
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.1.js29
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.2.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.1_T1.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.1_T2.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.3.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.1.js45
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.2.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.3.js31
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.1.js39
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.2_T1.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.2_T2.js49
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.1.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.3.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.4.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.5.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.6.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.7.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.8.js75
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.9.js75
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.1_T1.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.1_T2.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.3.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A5.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A6.1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A6.2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A7.js52
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T1.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T2.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T3.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T4.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T5.js27
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A1.js59
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T1.js43
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T2.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T3.js21
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T1.js22
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T2.js25
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T3.js26
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A3.js30
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.1_T1.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.1_T2.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.2.js19
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.3.js55
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A5.js35
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A6.1.js24
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A6.2.js14
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A7.js54
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T1.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T2.js64
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T3.js65
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T4.js79
-rw-r--r--external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T5.js27
1088 files changed, 71081 insertions, 0 deletions
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A1.js
new file mode 100644
index 000000000..39a2df261
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A1.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.10.1_A1;
+* @section: 11.10.1;
+* @assertion: White Space and Line Terminator between BitwiseANDExpression and "&" or between "&" and EqualityExpression are allowed;
+* @description: Checking uses eval;
+*/
+
+//CHECK#1
+if ((eval("1\u0009&\u00091")) !== 1) {
+ $ERROR('#1: (1\\u0009&\\u00091) === 1');
+}
+
+//CHECK#2
+if ((eval("1\u000B&\u000B1")) !== 1) {
+ $ERROR('#2: (1\\u000B&\\u000B1) === 1');
+}
+
+//CHECK#3
+if ((eval("1\u000C&\u000C1")) !== 1) {
+ $ERROR('#3: (1\\u000C&\\u000C1) === 1');
+}
+
+//CHECK#4
+if ((eval("1\u0020&\u00201")) !== 1) {
+ $ERROR('#4: (1\\u0020&\\u00201) === 1');
+}
+
+//CHECK#5
+if ((eval("1\u00A0&\u00A01")) !== 1) {
+ $ERROR('#5: (1\\u00A0&\\u00A01) === 1');
+}
+
+//CHECK#6
+if ((eval("1\u000A&\u000A1")) !== 1) {
+ $ERROR('#6: (1\\u000A&\\u000A1) === 1');
+}
+
+//CHECK#7
+if ((eval("1\u000D&\u000D1")) !== 1) {
+ $ERROR('#7: (1\\u000D&\\u000D1) === 1');
+}
+
+//CHECK#8
+if ((eval("1\u2028&\u20281")) !== 1) {
+ $ERROR('#8: (1\\u2028&\\u20281) === 1');
+}
+
+//CHECK#9
+if ((eval("1\u2029&\u20291")) !== 1) {
+ $ERROR('#9: (1\\u2029&\\u20291) === 1');
+}
+
+
+//CHECK#10
+if ((eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029&\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 1) {
+ $ERROR('#10: (1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029&\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T1.js
new file mode 100644
index 000000000..0cb8479a8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A2.1_T1;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if ((1 & 1) !== 1) {
+ $ERROR('#1: (1 & 1) === 1. Actual: ' + ((1 & 1)));
+}
+
+//CHECK#2
+var x = 1;
+if ((x & 1) !== 1) {
+ $ERROR('#2: var x = 1; (x & 1) === 1. Actual: ' + ((x & 1)));
+}
+
+//CHECK#3
+var y = 1;
+if ((1 & y) !== 1) {
+ $ERROR('#3: var y = 1; (1 & y) === 1. Actual: ' + ((1 & y)));
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if ((x & y) !== 1) {
+ $ERROR('#4: var x = 1; var y = 1; (x & y) === 1. Actual: ' + ((x & y)));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if ((objectx.prop & objecty.prop) !== 1) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; (objectx.prop & objecty.prop) === 1. Actual: ' + ((objectx.prop & objecty.prop)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T2.js
new file mode 100644
index 000000000..6863c2c8a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A2.1_T2;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x & 1;
+ $ERROR('#1.1: x & 1 throw ReferenceError. Actual: ' + (x & 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x & 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T3.js
new file mode 100644
index 000000000..fb06c6dc2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A2.1_T3;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 & y;
+ $ERROR('#1.1: 1 & y throw ReferenceError. Actual: ' + (1 & y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 & y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.2_T1.js
new file mode 100644
index 000000000..5f1e0ab00
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A2.2_T1;
+ * @section: 11.10.1, 8.6.2.6;
+ * @assertion: Operator x & y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if (({valueOf: function() {return 1}} & 1) !== 1) {
+ $ERROR('#1: ({valueOf: function() {return 1}} & 1) === 1. Actual: ' + (({valueOf: function() {return 1}} & 1)));
+}
+
+//CHECK#2
+if (({valueOf: function() {return 1}, toString: function() {return 0}} & 1) !== 1) {
+ $ERROR('#2: ({valueOf: function() {return 1}, toString: function() {return 0}} & 1) === 1. Actual: ' + (({valueOf: function() {return 1}, toString: function() {return 0}} & 1)));
+}
+
+//CHECK#3
+if (({valueOf: function() {return 1}, toString: function() {return {}}} & 1) !== 1) {
+ $ERROR('#3: ({valueOf: function() {return 1}, toString: function() {return {}}} & 1) === 1. Actual: ' + (({valueOf: function() {return 1}, toString: function() {return {}}} & 1)));
+}
+
+//CHECK#4
+try {
+ if (({valueOf: function() {return 1}, toString: function() {throw "error"}} & 1) !== 1) {
+ $ERROR('#4.1: ({valueOf: function() {return 1}, toString: function() {throw "error"}} & 1) === 1. Actual: ' + (({valueOf: function() {return 1}, toString: function() {throw "error"}} & 1)));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: ({valueOf: function() {return 1}, toString: function() {throw "error"}} & 1) not throw "error"');
+ } else {
+ $ERROR('#4.3: ({valueOf: function() {return 1}, toString: function() {throw "error"}} & 1) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if ((1 & {toString: function() {return 1}}) !== 1) {
+ $ERROR('#5.1: (1 & {toString: function() {return 1}}) === 1. Actual: ' + ((1 & {toString: function() {return 1}})));
+}
+
+//CHECK#6
+if ((1 & {valueOf: function() {return {}}, toString: function() {return 1}}) !== 1) {
+ $ERROR('#6: (1 & {valueOf: function() {return {}}, toString: function() {return 1}}) === 1. Actual: ' + ((1 & {valueOf: function() {return {}}, toString: function() {return 1}})));
+}
+
+//CHECK#7
+try {
+ 1 & {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: 1 & {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (1 & {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 & {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 & {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 & {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 & {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 & {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.3_T1.js
new file mode 100644
index 000000000..5d226b3a8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A2.3_T1;
+ * @section: 11.10.1;
+ * @assertion: ToInt32(first expression) is called first, and then ToInt32(second expression);
+ * @description: Checking by using "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x & y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x & y throw "x". Actual: ' + (x & y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToInt32(first expression) is called first, and then ToInt32(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x & y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T1.js
new file mode 100644
index 000000000..73bc10536
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A2.4_T1;
+ * @section: 11.10.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if (((x = 1) & x) !== 1) {
+ $ERROR('#1: var x = 0; ((x = 1) & x) === 1. Actual: ' + (((x = 1) & x)));
+}
+
+//CHECK#2
+var x = 0;
+if ((x & (x = 1)) !== 0) {
+ $ERROR('#2: var x = 0; (x & (x = 1)) === 0. Actual: ' + ((x & (x = 1))));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T2.js
new file mode 100644
index 000000000..44ad93487
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A2.4_T2;
+ * @section: 11.10.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() & y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() & y() throw "x". Actual: ' + (x() & y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() & y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T3.js
new file mode 100644
index 000000000..4abf60cc6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A2.4_T3;
+ * @section: 11.10.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x & (x = 1);
+ $ERROR('#1.1: x & (x = 1) throw ReferenceError. Actual: ' + (x & (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x & (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if (((y = 1) & y) !== 1) {
+ $ERROR('#2: ((y = 1) & y) === 1. Actual: ' + (((y = 1) & y)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.1.js
new file mode 100644
index 000000000..1153fa443
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T1.1;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) and Type(y) are primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if ((true & true) !== 1) {
+ $ERROR('#1: (true & true) === 1. Actual: ' + ((true & true)));
+}
+
+//CHECK#2
+if ((new Boolean(true) & true) !== 1) {
+ $ERROR('#2: (new Boolean(true) & true) === 1. Actual: ' + ((new Boolean(true) & true)));
+}
+
+//CHECK#3
+if ((true & new Boolean(true)) !== 1) {
+ $ERROR('#3: (true & new Boolean(true)) === 1. Actual: ' + ((true & new Boolean(true))));
+}
+
+//CHECK#4
+if ((new Boolean(true) & new Boolean(true)) !== 1) {
+ $ERROR('#4: (new Boolean(true) & new Boolean(true)) === 1. Actual: ' + ((new Boolean(true) & new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.2.js
new file mode 100644
index 000000000..38d434616
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T1.2;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) and Type(y) are primitive number and Number object;
+*/
+
+//CHECK#1
+if ((1 & 1) !== 1) {
+ $ERROR('#1: (1 & 1) === 1. Actual: ' + ((1 & 1)));
+}
+
+//CHECK#2
+if ((new Number(1) & 1) !== 1) {
+ $ERROR('#2: (new Number(1) & 1) === 1. Actual: ' + ((new Number(1) & 1)));
+}
+
+//CHECK#3
+if ((1 & new Number(1)) !== 1) {
+ $ERROR('#3: (1 & new Number(1)) === 1. Actual: ' + ((1 & new Number(1))));
+}
+
+//CHECK#4
+if ((new Number(1) & new Number(1)) !== 1) {
+ $ERROR('#4: (new Number(1) & new Number(1)) === 1. Actual: ' + ((new Number(1) & new Number(1))));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.3.js
new file mode 100644
index 000000000..67865a4c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T1.3;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) and Type(y) are primitive string and String object;
+*/
+
+//CHECK#1
+if (("1" & "1") !== 1) {
+ $ERROR('#1: ("1" & "1") === 1. Actual: ' + (("1" & "1")));
+}
+
+//CHECK#2
+if ((new String("1") & "1") !== 1) {
+ $ERROR('#2: (new String("1") & "1") === 1. Actual: ' + ((new String("1") & "1")));
+}
+
+//CHECK#3
+if (("1" & new String("1")) !== 1) {
+ $ERROR('#3: ("1" & new String("1")) === 1. Actual: ' + (("1" & new String("1"))));
+}
+
+//CHECK#4
+if ((new String("1") & new String("1")) !== 1) {
+ $ERROR('#4: (new String("1") & new String("1")) === 1. Actual: ' + ((new String("1") & new String("1"))));
+}
+
+//CHECK#5
+if (("x" & "1") !== 0) {
+ $ERROR('#5: ("x" & "1") === 0. Actual: ' + (("x" & "1")));
+}
+
+//CHECK#6
+if (("1" & "x") !== 0) {
+ $ERROR('#6: ("1" & "x") === 0. Actual: ' + (("1" & "x")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.4.js
new file mode 100644
index 000000000..0b8ba8776
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T1.4;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) and Type(y) are null and undefined;
+*/
+
+//CHECK#1
+if ((null & undefined) !== 0) {
+ $ERROR('#1: (null & undefined) === 0. Actual: ' + ((null & undefined)));
+}
+
+//CHECK#2
+if ((undefined & null) !== 0) {
+ $ERROR('#2: (undefined & null) === 0. Actual: ' + ((undefined & null)));
+}
+
+//CHECK#3
+if ((undefined & undefined) !== 0) {
+ $ERROR('#3: (undefined & undefined) === 0. Actual: ' + ((undefined & undefined)));
+}
+
+//CHECK#4
+if ((null & null) !== 0) {
+ $ERROR('#4: (null & null) === 0. Actual: ' + ((null & null)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.5.js
new file mode 100644
index 000000000..43820e22d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T1.5.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T1.5;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) and Type(y) are Object object and Function object;
+ */
+
+//CHECK#1
+if (({} & function(){return 1}) !== 0) {
+ $ERROR('#1: ({} & function(){return 1}) === 0. Actual: ' + (({} & function(){return 1})));
+}
+
+//CHECK#2
+if ((function(){return 1} & {}) !== 0) {
+ $ERROR('#2: (function(){return 1} & {}) === 0. Actual: ' + ((function(){return 1} & {})));
+}
+
+//CHECK#3
+if ((function(){return 1} & function(){return 1}) !== 0) {
+ $ERROR('#3: (function(){return 1} & function(){return 1}) === 0. Actual: ' + ((function(){return 1} & function(){return 1})));
+}
+
+//CHECK#4
+if (({} & {}) !== 0) {
+ $ERROR('#4: ({} & {}) === 0. Actual: ' + (({} & {})));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.1.js
new file mode 100644
index 000000000..2955d2bdf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T2.1;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if ((true & 1) !== 1) {
+ $ERROR('#1: (true & 1) === 1. Actual: ' + ((true & 1)));
+}
+
+//CHECK#2
+if ((1 & true) !== 1) {
+ $ERROR('#2: (1 & true) === 1. Actual: ' + ((1 & true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) & 1) !== 1) {
+ $ERROR('#3: (new Boolean(true) & 1) === 1. Actual: ' + ((new Boolean(true) & 1)));
+}
+
+//CHECK#4
+if ((1 & new Boolean(true)) !== 1) {
+ $ERROR('#4: (1 & new Boolean(true)) === 1. Actual: ' + ((1 & new Boolean(true))));
+}
+
+//CHECK#5
+if ((true & new Number(1)) !== 1) {
+ $ERROR('#5: (true & new Number(1)) === 1. Actual: ' + ((true & new Number(1))));
+}
+
+//CHECK#6
+if ((new Number(1) & true) !== 1) {
+ $ERROR('#6: (new Number(1) & true) === 1. Actual: ' + ((new Number(1) & true)));
+}
+
+//CHECK#7
+if ((new Boolean(true) & new Number(1)) !== 1) {
+ $ERROR('#7: (new Boolean(true) & new Number(1)) === 1. Actual: ' + ((new Boolean(true) & new Number(1))));
+}
+
+//CHECK#8
+if ((new Number(1) & new Boolean(true)) !== 1) {
+ $ERROR('#8: (new Number(1) & new Boolean(true)) === 1. Actual: ' + ((new Number(1) & new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.2.js
new file mode 100644
index 000000000..92f7dc058
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T2.2;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if (("1" & 1) !== 1) {
+ $ERROR('#1: ("1" & 1) === 1. Actual: ' + (("1" & 1)));
+}
+
+//CHECK#2
+if ((1 & "1") !== 1) {
+ $ERROR('#2: (1 & "1") === 1. Actual: ' + ((1 & "1")));
+}
+
+//CHECK#3
+if ((new String("1") & 1) !== 1) {
+ $ERROR('#3: (new String("1") & 1) === 1. Actual: ' + ((new String("1") & 1)));
+}
+
+//CHECK#4
+if ((1 & new String("1")) !== 1) {
+ $ERROR('#4: (1 & new String("1")) === 1. Actual: ' + ((1 & new String("1"))));
+}
+
+//CHECK#5
+if (("1" & new Number(1)) !== 1) {
+ $ERROR('#5: ("1" & new Number(1)) === 1. Actual: ' + (("1" & new Number(1))));
+}
+
+//CHECK#6
+if ((new Number(1) & "1") !== 1) {
+ $ERROR('#6: (new Number(1) & "1") === 1. Actual: ' + ((new Number(1) & "1")));
+}
+
+//CHECK#7
+if ((new String("1") & new Number(1)) !== 1) {
+ $ERROR('#7: (new String("1") & new Number(1)) === 1. Actual: ' + ((new String("1") & new Number(1))));
+}
+
+//CHECK#8
+if ((new Number(1) & new String("1")) !== 1) {
+ $ERROR('#8: (new Number(1) & new String("1")) === 1. Actual: ' + ((new Number(1) & new String("1"))));
+}
+
+//CHECK#9
+if (("x" & 1) !== 0) {
+ $ERROR('#9: ("x" & 1) === 0. Actual: ' + (("x" & 1)));
+}
+
+//CHECK#10
+if ((1 & "x") !== 0) {
+ $ERROR('#10: (1 & "x") === 0. Actual: ' + ((1 & "x")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.3.js
new file mode 100644
index 000000000..2e7acb90d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T2.3;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ((1 & null) !== 0) {
+ $ERROR('#1: (1 & null) === 0. Actual: ' + ((1 & null)));
+}
+
+//CHECK#2
+if ((null & 1) !== 0) {
+ $ERROR('#2: (null & 1) === 0. Actual: ' + ((null & 1)));
+}
+
+//CHECK#3
+if ((new Number(1) & null) !== 0) {
+ $ERROR('#3: (new Number(1) & null) === 0. Actual: ' + ((new Number(1) & null)));
+}
+
+//CHECK#4
+if ((null & new Number(1)) !== 0) {
+ $ERROR('#4: (null & new Number(1)) === 0. Actual: ' + ((null & new Number(1))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.4.js
new file mode 100644
index 000000000..bf7529670
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T2.4;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ((1 & undefined) !== 0) {
+ $ERROR('#1: (1 & undefined) === 0. Actual: ' + ((1 & undefined)));
+}
+
+//CHECK#2
+if ((undefined & 1) !== 0) {
+ $ERROR('#2: (undefined & 1) === 0. Actual: ' + ((undefined & 1)));
+}
+
+//CHECK#3
+if ((new Number(1) & undefined) !== 0) {
+ $ERROR('#3: (new Number(1) & undefined) === 0. Actual: ' + ((new Number(1) & undefined)));
+}
+
+//CHECK#4
+if ((undefined & new Number(1)) !== 0) {
+ $ERROR('#4: (undefined & new Number(1)) === 0. Actual: ' + ((undefined & new Number(1))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.5.js
new file mode 100644
index 000000000..6ec95b067
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T2.5;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) us different from Type(y) and both types are String (primitive or object) or Boolean (primitive and object);
+*/
+
+//CHECK#1
+if ((true & "1") !== 1) {
+ $ERROR('#1: (true & "1") === 1. Actual: ' + ((true & "1")));
+}
+
+//CHECK#2
+if (("1" & true) !== 1) {
+ $ERROR('#2: ("1" & true) === 1. Actual: ' + (("1" & true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) & "1") !== 1) {
+ $ERROR('#3: (new Boolean(true) & "1") === 1. Actual: ' + ((new Boolean(true) & "1")));
+}
+
+//CHECK#4
+if (("1" & new Boolean(true)) !== 1) {
+ $ERROR('#4: ("1" & new Boolean(true)) === 1. Actual: ' + (("1" & new Boolean(true))));
+}
+
+//CHECK#5
+if ((true & new String("1")) !== 1) {
+ $ERROR('#5: (true & new String("1")) === 1. Actual: ' + ((true & new String("1"))));
+}
+
+//CHECK#6
+if ((new String("1") & true) !== 1) {
+ $ERROR('#6: (new String("1") & true) === 1. Actual: ' + ((new String("1") & true)));
+}
+
+//CHECK#7
+if ((new Boolean(true) & new String("1")) !== 1) {
+ $ERROR('#7: (new Boolean(true) & new String("1")) === 1. Actual: ' + ((new Boolean(true) & new String("1"))));
+}
+
+//CHECK#8
+if ((new String("1") & new Boolean(true)) !== 1) {
+ $ERROR('#8: (new String("1") & new Boolean(true)) === 1. Actual: ' + ((new String("1") & new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.6.js
new file mode 100644
index 000000000..a9d0ac863
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T2.6;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (("1" & undefined) !== 0) {
+ $ERROR('#1: ("1" & undefined) === 0. Actual: ' + (("1" & undefined)));
+}
+
+//CHECK#2
+if ((undefined & "1") !== 0) {
+ $ERROR('#2: (undefined & "1") === 0. Actual: ' + ((undefined & "1")));
+}
+
+//CHECK#3
+if ((new String("1") & undefined) !== 0) {
+ $ERROR('#3: (new String("1") & undefined) === 0. Actual: ' + ((new String("1") & undefined)));
+}
+
+//CHECK#4
+if ((undefined & new String("1")) !== 0) {
+ $ERROR('#4: (undefined & new String("1")) === 0. Actual: ' + ((undefined & new String("1"))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.7.js
new file mode 100644
index 000000000..83c8fc5fd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T2.7;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (("1" & null) !== 0) {
+ $ERROR('#1: ("1" & null) === 0. Actual: ' + (("1" & null)));
+}
+
+//CHECK#2
+if ((null & "1") !== 0) {
+ $ERROR('#2: (null & "1") === 0. Actual: ' + ((null & "1")));
+}
+
+//CHECK#3
+if ((new String("1") & null) !== 0) {
+ $ERROR('#3: (new String("1") & null) === 0. Actual: ' + ((new String("1") & null)));
+}
+
+//CHECK#4
+if ((null & new String("1")) !== 0) {
+ $ERROR('#4: (null & new String("1")) === 0. Actual: ' + ((null & new String("1"))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.8.js
new file mode 100644
index 000000000..24b70fff8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T2.8;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ((true & undefined) !== 0) {
+ $ERROR('#1: (true & undefined) === 0. Actual: ' + ((true & undefined)));
+}
+
+//CHECK#2
+if ((undefined & true) !== 0) {
+ $ERROR('#2: (undefined & true) === 0. Actual: ' + ((undefined & true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) & undefined) !== 0) {
+ $ERROR('#3: (new Boolean(true) & undefined) === 0. Actual: ' + ((new Boolean(true) & undefined)));
+}
+
+//CHECK#4
+if ((undefined & new Boolean(true)) !== 0) {
+ $ERROR('#4: (undefined & new Boolean(true)) === 0. Actual: ' + ((undefined & new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.9.js
new file mode 100644
index 000000000..d90a0d253
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.1_AND_Operator/S11.10.1_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.1_A3_T2.9;
+ * @section: 11.10.1;
+ * @assertion: Operator x & y returns ToNumber(x) & ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ((true & null) !== 0) {
+ $ERROR('#1: (true & null) === 0. Actual: ' + ((true & null)));
+}
+
+//CHECK#2
+if ((null & true) !== 0) {
+ $ERROR('#2: (null & true) === 0. Actual: ' + ((null & true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) & null) !== 0) {
+ $ERROR('#3: (new Boolean(true) & null) === 0. Actual: ' + ((new Boolean(true) & null)));
+}
+
+//CHECK#4
+if ((null & new Boolean(true)) !== 0) {
+ $ERROR('#4: (null & new Boolean(true)) === 0. Actual: ' + ((null & new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A1.js
new file mode 100644
index 000000000..92564d01f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A1.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.10.2_A1;
+* @section: 11.10.2;
+* @assertion: White Space and Line Terminator between BitwiseXORExpression and "^" or between "^" and BitwiseANDExpression are allowed;
+* @description: The check uses eval;
+*/
+
+//CHECK#1
+if ((eval("1\u0009^\u00091")) !== 0) {
+ $ERROR('#1: (1\\u0009^\\u00091) === 0');
+}
+
+//CHECK#2
+if ((eval("1\u000B^\u000B1")) !== 0) {
+ $ERROR('#2: (1\\u000B^\\u000B1) === 0');
+}
+
+//CHECK#3
+if ((eval("1\u000C^\u000C1")) !== 0) {
+ $ERROR('#3: (1\\u000C^\\u000C1) === 0');
+}
+
+//CHECK#4
+if ((eval("1\u0020^\u00201")) !== 0) {
+ $ERROR('#4: (1\\u0020^\\u00201) === 0');
+}
+
+//CHECK#5
+if ((eval("1\u00A0^\u00A01")) !== 0) {
+ $ERROR('#5: (1\\u00A0^\\u00A01) === 0');
+}
+
+//CHECK#6
+if ((eval("1\u000A^\u000A1")) !== 0) {
+ $ERROR('#6: (1\\u000A^\\u000A1) === 0');
+}
+
+//CHECK#7
+if ((eval("1\u000D^\u000D1")) !== 0) {
+ $ERROR('#7: (1\\u000D^\\u000D1) === 0');
+}
+
+//CHECK#8
+if ((eval("1\u2028^\u20281")) !== 0) {
+ $ERROR('#8: (1\\u2028^\\u20281) === 0');
+}
+
+//CHECK#9
+if ((eval("1\u2029^\u20291")) !== 0) {
+ $ERROR('#9: (1\\u2029^\\u20291) === 0');
+}
+
+
+//CHECK#10
+if ((eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029^\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 0) {
+ $ERROR('#10: (1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029^\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T1.js
new file mode 100644
index 000000000..5fa165284
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A2.1_T1;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if ((1 ^ 1) !== 0) {
+ $ERROR('#1: (1 ^ 1) === 0. Actual: ' + ((1 ^ 1)));
+}
+
+//CHECK#2
+var x = 1;
+if ((x ^ 1) !== 0) {
+ $ERROR('#2: var x = 1; (x ^ 1) === 0. Actual: ' + ((x ^ 1)));
+}
+
+//CHECK#3
+var y = 1;
+if ((1 ^ y) !== 0) {
+ $ERROR('#3: var y = 1; (1 ^ y) === 0. Actual: ' + ((1 ^ y)));
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if ((x ^ y) !== 0) {
+ $ERROR('#4: var x = 1; var y = 1; (x ^ y) === 0. Actual: ' + ((x ^ y)));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if ((objectx.prop ^ objecty.prop) !== 0) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; (objectx.prop ^ objecty.prop) === 0. Actual: ' + ((objectx.prop ^ objecty.prop)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T2.js
new file mode 100644
index 000000000..cb735e892
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A2.1_T2;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+
+//CHECK#1
+try {
+ x ^ 1;
+ $ERROR('#1.1: x ^ 1 throw ReferenceError. Actual: ' + (x ^ 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x ^ 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T3.js
new file mode 100644
index 000000000..c1dc39da4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A2.1_T3;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 ^ y;
+ $ERROR('#1.1: 1 ^ y throw ReferenceError. Actual: ' + (1 ^ y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 ^ y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.2_T1.js
new file mode 100644
index 000000000..e81202462
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.2_T1.js
@@ -0,0 +1,71 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A2.2_T1;
+ * @section: 11.10.2, 8.6.2.6;
+ * @assertion: Operator x ^ y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+
+//CHECK#1
+if (({valueOf: function() {return 1}} ^ 1) !== 0) {
+ $ERROR('#1: ({valueOf: function() {return 1}} ^ 1) === 0. Actual: ' + (({valueOf: function() {return 1}} ^ 1)));
+}
+
+//CHECK#2
+if (({valueOf: function() {return 1}, toString: function() {return 0}} ^ 1) !== 0) {
+ $ERROR('#2: ({valueOf: function() {return 1}, toString: function() {return 0}} ^ 1) === 0. Actual: ' + (({valueOf: function() {return 1}, toString: function() {return 0}} ^ 1)));
+}
+
+//CHECK#3
+if (({valueOf: function() {return 1}, toString: function() {return {}}} ^ 1) !== 0) {
+ $ERROR('#3: ({valueOf: function() {return 1}, toString: function() {return {}}} ^ 1) === 0. Actual: ' + (({valueOf: function() {return 1}, toString: function() {return {}}} ^ 1)));
+}
+
+//CHECK#4
+try {
+ if (({valueOf: function() {return 1}, toString: function() {throw "error"}} ^ 1) !== 0) {
+ $ERROR('#4.1: ({valueOf: function() {return 1}, toString: function() {throw "error"}} ^ 1) === 0. Actual: ' + (({valueOf: function() {return 1}, toString: function() {throw "error"}} ^ 1)));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: ({valueOf: function() {return 1}, toString: function() {throw "error"}} ^ 1) not throw "error"');
+ } else {
+ $ERROR('#4.3: ({valueOf: function() {return 1}, toString: function() {throw "error"}} ^ 1) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if ((1 ^ {toString: function() {return 1}}) !== 0) {
+ $ERROR('#5: (1 ^ {toString: function() {return 1}}) === 0. Actual: ' + ((1 ^ {toString: function() {return 1}})));
+}
+
+//CHECK#6
+if ((1 ^ {valueOf: function() {return {}}, toString: function() {return 1}}) !== 0) {
+ $ERROR('#6: (1 ^ {valueOf: function() {return {}}, toString: function() {return 1}}) === 0. Actual: ' + ((1 ^ {valueOf: function() {return {}}, toString: function() {return 1}})));
+}
+
+//CHECK#7
+try {
+ 1 ^ {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: 1 ^ {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (1 ^ {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 ^ {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 ^ {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 ^ {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 ^ {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 ^ {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.3_T1.js
new file mode 100644
index 000000000..9f615d22d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A2.3_T1;
+ * @section: 11.10.2;
+ * @assertion: ToInt32(first expression) is called first, and then ToInt32(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x ^ y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x ^ y throw "x". Actual: ' + (x ^ y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToInt32(first expression) is called first, and then ToInt32(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x ^ y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T1.js
new file mode 100644
index 000000000..54fd2067f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A2.4_T1;
+ * @section: 11.10.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 1;
+if (((x = 0) ^ x) !== 0) {
+ $ERROR('#1: var x = 0; ((x = 1) ^ x) === 0. Actual: ' + (((x = 1) ^ x)));
+}
+
+//CHECK#2
+var x = 0;
+if ((x ^ (x = 1)) !== 1) {
+ $ERROR('#2: var x = 0; (x ^ (x = 1)) === 1. Actual: ' + ((x ^ (x = 1))));
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T2.js
new file mode 100644
index 000000000..bf9bef30b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A2.4_T2;
+ * @section: 11.10.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() ^ y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() ^ y() throw "x". Actual: ' + (x() ^ y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() ^ y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T3.js
new file mode 100644
index 000000000..f6a9a4d61
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A2.4_T3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A2.4_T3;
+ * @section: 11.10.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x ^ (x = 1);
+ $ERROR('#1.1: x ^ (x = 1) throw ReferenceError. Actual: ' + (x ^ (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x ^ (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if (((y = 1) ^ y) !== 0) {
+ $ERROR('#2: ((y = 1) ^ y) === 0. Actual: ' + (((y = 1) ^ y)));
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.1.js
new file mode 100644
index 000000000..2816f2c1c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T1.1;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) and Type(y) are primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if ((true ^ true) !== 0) {
+ $ERROR('#1: (true ^ true) === 0. Actual: ' + ((true ^ true)));
+}
+
+//CHECK#2
+if ((new Boolean(true) ^ true) !== 0) {
+ $ERROR('#2: (new Boolean(true) ^ true) === 0. Actual: ' + ((new Boolean(true) ^ true)));
+}
+
+//CHECK#3
+if ((true ^ new Boolean(true)) !== 0) {
+ $ERROR('#3: (true ^ new Boolean(true)) === 0. Actual: ' + ((true ^ new Boolean(true))));
+}
+
+//CHECK#4
+if ((new Boolean(true) ^ new Boolean(true)) !== 0) {
+ $ERROR('#4: (new Boolean(true) ^ new Boolean(true)) === 0. Actual: ' + ((new Boolean(true) ^ new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.2.js
new file mode 100644
index 000000000..bbda75d01
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T1.2;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) and Type(y) are primitive number and Number object;
+*/
+
+//CHECK#1
+if ((1 ^ 1) !== 0) {
+ $ERROR('#1: (1 ^ 1) === 0. Actual: ' + ((1 ^ 1)));
+}
+
+//CHECK#2
+if ((new Number(1) ^ 1) !== 0) {
+ $ERROR('#2: (new Number(1) ^ 1) === 0. Actual: ' + ((new Number(1) ^ 1)));
+}
+
+//CHECK#3
+if ((1 ^ new Number(1)) !== 0) {
+ $ERROR('#3: (1 ^ new Number(1)) === 0. Actual: ' + ((1 ^ new Number(1))));
+}
+
+//CHECK#4
+if ((new Number(1) ^ new Number(1)) !== 0) {
+ $ERROR('#4: (new Number(1) ^ new Number(1)) === 0. Actual: ' + ((new Number(1) ^ new Number(1))));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.3.js
new file mode 100644
index 000000000..363dd5709
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T1.3;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) and Type(y) are primitive string and String object;
+*/
+
+//CHECK#1
+if (("1" ^ "1") !== 0) {
+ $ERROR('#1: ("1" ^ "1") === 0. Actual: ' + (("1" ^ "1")));
+}
+
+//CHECK#2
+if ((new String("1") ^ "1") !== 0) {
+ $ERROR('#2: (new String("1") ^ "1") === 0. Actual: ' + ((new String("1") ^ "1")));
+}
+
+//CHECK#3
+if (("1" ^ new String("1")) !== 0) {
+ $ERROR('#3: ("1" ^ new String("1")) === 0. Actual: ' + (("1" ^ new String("1"))));
+}
+
+//CHECK#4
+if ((new String("1") ^ new String("1")) !== 0) {
+ $ERROR('#4: (new String("1") ^ new String("1")) === 0. Actual: ' + ((new String("1") ^ new String("1"))));
+}
+
+//CHECK#5
+if (("x" ^ "1") !== 1) {
+ $ERROR('#5: ("x" ^ "1") === 1. Actual: ' + (("x" ^ "1")));
+}
+
+//CHECK#6
+if (("1" ^ "x") !== 1) {
+ $ERROR('#6: ("1" ^ "x") === 1. Actual: ' + (("1" ^ "x")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.4.js
new file mode 100644
index 000000000..aa7ada0ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T1.4;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) and Type(y) are null and undefined;
+ */
+
+//CHECK#1
+if ((null ^ undefined) !== 0) {
+ $ERROR('#1: (null ^ undefined) === 0. Actual: ' + ((null ^ undefined)));
+}
+
+//CHECK#2
+if ((undefined ^ null) !== 0) {
+ $ERROR('#2: (undefined ^ null) === 0. Actual: ' + ((undefined ^ null)));
+}
+
+//CHECK#3
+if ((undefined ^ undefined) !== 0) {
+ $ERROR('#3: (undefined ^ undefined) === 0. Actual: ' + ((undefined ^ undefined)));
+}
+
+//CHECK#4
+if ((null ^ null) !== 0) {
+ $ERROR('#4: (null ^ null) === 0. Actual: ' + ((null ^ null)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.5.js
new file mode 100644
index 000000000..27454bc22
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T1.5.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T1.5;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) and Type(y) are Object object and Function object;
+ */
+
+//CHECK#1
+if (({} ^ function(){return 1}) !== 0) {
+ $ERROR('#1: ({} ^ function(){return 1}) === 0. Actual: ' + (({} ^ function(){return 1})));
+}
+
+//CHECK#2
+if ((function(){return 1} ^ {}) !== 0) {
+ $ERROR('#2: (function(){return 1} ^ {}) === 0. Actual: ' + ((function(){return 1} ^ {})));
+}
+
+//CHECK#3
+if ((function(){return 1} ^ function(){return 1}) !== 0) {
+ $ERROR('#3: (function(){return 1} ^ function(){return 1}) === 0. Actual: ' + ((function(){return 1} ^ function(){return 1})));
+}
+
+//CHECK#4
+if (({} ^ {}) !== 0) {
+ $ERROR('#4: ({} ^ {}) === 0. Actual: ' + (({} ^ {})));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.1.js
new file mode 100644
index 000000000..714fd5589
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T2.1;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if ((true ^ 1) !== 0) {
+ $ERROR('#1: (true ^ 1) === 0. Actual: ' + ((true ^ 1)));
+}
+
+//CHECK#2
+if ((1 ^ true) !== 0) {
+ $ERROR('#2: (1 ^ true) === 0. Actual: ' + ((1 ^ true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) ^ 1) !== 0) {
+ $ERROR('#3: (new Boolean(true) ^ 1) === 0. Actual: ' + ((new Boolean(true) ^ 1)));
+}
+
+//CHECK#4
+if ((1 ^ new Boolean(true)) !== 0) {
+ $ERROR('#4: (1 ^ new Boolean(true)) === 0. Actual: ' + ((1 ^ new Boolean(true))));
+}
+
+//CHECK#5
+if ((true ^ new Number(1)) !== 0) {
+ $ERROR('#5: (true ^ new Number(1)) === 0. Actual: ' + ((true ^ new Number(1))));
+}
+
+//CHECK#6
+if ((new Number(1) ^ true) !== 0) {
+ $ERROR('#6: (new Number(1) ^ true) === 0. Actual: ' + ((new Number(1) ^ true)));
+}
+
+//CHECK#7
+if ((new Boolean(true) ^ new Number(1)) !== 0) {
+ $ERROR('#7: (new Boolean(true) ^ new Number(1)) === 0. Actual: ' + ((new Boolean(true) ^ new Number(1))));
+}
+
+//CHECK#8
+if ((new Number(1) ^ new Boolean(true)) !== 0) {
+ $ERROR('#8: (new Number(1) ^ new Boolean(true)) === 0. Actual: ' + ((new Number(1) ^ new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.2.js
new file mode 100644
index 000000000..915be36d6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T2.2;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if (("1" ^ 1) !== 0) {
+ $ERROR('#1: ("1" ^ 1) === 0. Actual: ' + (("1" ^ 1)));
+}
+
+//CHECK#2
+if ((1 ^ "1") !== 0) {
+ $ERROR('#2: (1 ^ "1") === 0. Actual: ' + ((1 ^ "1")));
+}
+
+//CHECK#3
+if ((new String("1") ^ 1) !== 0) {
+ $ERROR('#3: (new String("1") ^ 1) === 0. Actual: ' + ((new String("1") ^ 1)));
+}
+
+//CHECK#4
+if ((1 ^ new String("1")) !== 0) {
+ $ERROR('#4: (1 ^ new String("1")) === 0. Actual: ' + ((1 ^ new String("1"))));
+}
+
+//CHECK#5
+if (("1" ^ new Number(1)) !== 0) {
+ $ERROR('#5: ("1" ^ new Number(1)) === 0. Actual: ' + (("1" ^ new Number(1))));
+}
+
+//CHECK#6
+if ((new Number(1) ^ "1") !== 0) {
+ $ERROR('#6: (new Number(1) ^ "1") === 0. Actual: ' + ((new Number(1) ^ "1")));
+}
+
+//CHECK#7
+if ((new String("1") ^ new Number(1)) !== 0) {
+ $ERROR('#7: (new String("1") ^ new Number(1)) === 0. Actual: ' + ((new String("1") ^ new Number(1))));
+}
+
+//CHECK#8
+if ((new Number(1) ^ new String("1")) !== 0) {
+ $ERROR('#8: (new Number(1) ^ new String("1")) === 0. Actual: ' + ((new Number(1) ^ new String("1"))));
+}
+
+//CHECK#9
+if (("x" ^ 1) !== 1) {
+ $ERROR('#9: ("x" ^ 1) === 1. Actual: ' + (("x" ^ 1)));
+}
+
+//CHECK#10
+if ((1 ^ "x") !== 1) {
+ $ERROR('#10: (1 ^ "x") === 1. Actual: ' + ((1 ^ "x")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.3.js
new file mode 100644
index 000000000..65f4f73df
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T2.3;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ((1 ^ null) !== 1) {
+ $ERROR('#1: (1 ^ null) === 1. Actual: ' + ((1 ^ null)));
+}
+
+//CHECK#2
+if ((null ^ 1) !== 1) {
+ $ERROR('#2: (null ^ 1) === 1. Actual: ' + ((null ^ 1)));
+}
+
+//CHECK#3
+if ((new Number(1) ^ null) !== 1) {
+ $ERROR('#3: (new Number(1) ^ null) === 1. Actual: ' + ((new Number(1) ^ null)));
+}
+
+//CHECK#4
+if ((null ^ new Number(1)) !== 1) {
+ $ERROR('#4: (null ^ new Number(1)) === 1. Actual: ' + ((null ^ new Number(1))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.4.js
new file mode 100644
index 000000000..0e430b035
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T2.4;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ((1 ^ undefined) !== 1) {
+ $ERROR('#1: (1 ^ undefined) === 1. Actual: ' + ((1 ^ undefined)));
+}
+
+//CHECK#2
+if ((undefined ^ 1) !== 1) {
+ $ERROR('#2: (undefined ^ 1) === 1. Actual: ' + ((undefined ^ 1)));
+}
+
+//CHECK#3
+if ((new Number(1) ^ undefined) !== 1) {
+ $ERROR('#3: (new Number(1) ^ undefined) === 1. Actual: ' + ((new Number(1) ^ undefined)));
+}
+
+//CHECK#4
+if ((undefined ^ new Number(1)) !== 1) {
+ $ERROR('#4: (undefined ^ new Number(1)) === 1. Actual: ' + ((undefined ^ new Number(1))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.5.js
new file mode 100644
index 000000000..1232df83e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T2.5;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if ((true ^ "1") !== 0) {
+ $ERROR('#1: (true ^ "1") === 0. Actual: ' + ((true ^ "1")));
+}
+
+//CHECK#2
+if (("1" ^ true) !== 0) {
+ $ERROR('#2: ("1" ^ true) === 0. Actual: ' + (("1" ^ true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) ^ "1") !== 0) {
+ $ERROR('#3: (new Boolean(true) ^ "1") === 0. Actual: ' + ((new Boolean(true) ^ "1")));
+}
+
+//CHECK#4
+if (("1" ^ new Boolean(true)) !== 0) {
+ $ERROR('#4: ("1" ^ new Boolean(true)) === 0. Actual: ' + (("1" ^ new Boolean(true))));
+}
+
+//CHECK#5
+if ((true ^ new String("1")) !== 0) {
+ $ERROR('#5: (true ^ new String("1")) === 0. Actual: ' + ((true ^ new String("1"))));
+}
+
+//CHECK#6
+if ((new String("1") ^ true) !== 0) {
+ $ERROR('#6: (new String("1") ^ true) === 0. Actual: ' + ((new String("1") ^ true)));
+}
+
+//CHECK#7
+if ((new Boolean(true) ^ new String("1")) !== 0) {
+ $ERROR('#7: (new Boolean(true) ^ new String("1")) === 0. Actual: ' + ((new Boolean(true) ^ new String("1"))));
+}
+
+//CHECK#8
+if ((new String("1") ^ new Boolean(true)) !== 0) {
+ $ERROR('#8: (new String("1") ^ new Boolean(true)) === 0. Actual: ' + ((new String("1") ^ new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.6.js
new file mode 100644
index 000000000..1d6f0fc08
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T2.6;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (("1" ^ undefined) !== 1) {
+ $ERROR('#1: ("1" ^ undefined) === 1. Actual: ' + (("1" ^ undefined)));
+}
+
+//CHECK#2
+if ((undefined ^ "1") !== 1) {
+ $ERROR('#2: (undefined ^ "1") === 1. Actual: ' + ((undefined ^ "1")));
+}
+
+//CHECK#3
+if ((new String("1") ^ undefined) !== 1) {
+ $ERROR('#3: (new String("1") ^ undefined) === 1. Actual: ' + ((new String("1") ^ undefined)));
+}
+
+//CHECK#4
+if ((undefined ^ new String("1")) !== 1) {
+ $ERROR('#4: (undefined ^ new String("1")) === 1. Actual: ' + ((undefined ^ new String("1"))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.7.js
new file mode 100644
index 000000000..18dca7f68
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T2.7;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (("1" ^ null) !== 1) {
+ $ERROR('#1: ("1" ^ null) === 1. Actual: ' + (("1" ^ null)));
+}
+
+//CHECK#2
+if ((null ^ "1") !== 1) {
+ $ERROR('#2: (null ^ "1") === 1. Actual: ' + ((null ^ "1")));
+}
+
+//CHECK#3
+if ((new String("1") ^ null) !== 1) {
+ $ERROR('#3: (new String("1") ^ null) === 1. Actual: ' + ((new String("1") ^ null)));
+}
+
+//CHECK#4
+if ((null ^ new String("1")) !== 1) {
+ $ERROR('#4: (null ^ new String("1")) === 1. Actual: ' + ((null ^ new String("1"))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.8.js
new file mode 100644
index 000000000..e24fc783c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T2.8;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ((true ^ undefined) !== 1) {
+ $ERROR('#1: (true ^ undefined) === 1. Actual: ' + ((true ^ undefined)));
+}
+
+//CHECK#2
+if ((undefined ^ true) !== 1) {
+ $ERROR('#2: (undefined ^ true) === 1. Actual: ' + ((undefined ^ true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) ^ undefined) !== 1) {
+ $ERROR('#3: (new Boolean(true) ^ undefined) === 1. Actual: ' + ((new Boolean(true) ^ undefined)));
+}
+
+//CHECK#4
+if ((undefined ^ new Boolean(true)) !== 1) {
+ $ERROR('#4: (undefined ^ new Boolean(true)) === 1. Actual: ' + ((undefined ^ new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.9.js
new file mode 100644
index 000000000..438c7a27e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.2_XOR_Operator/S11.10.2_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.2_A3_T2.9;
+ * @section: 11.10.2;
+ * @assertion: Operator x ^ y returns ToNumber(x) ^ ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ((true ^ null) !== 1) {
+ $ERROR('#1: (true ^ null) === 1. Actual: ' + ((true ^ null)));
+}
+
+//CHECK#2
+if ((null ^ true) !== 1) {
+ $ERROR('#2: (null ^ true) === 1. Actual: ' + ((null ^ true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) ^ null) !== 1) {
+ $ERROR('#3: (new Boolean(true) ^ null) === 1. Actual: ' + ((new Boolean(true) ^ null)));
+}
+
+//CHECK#4
+if ((null ^ new Boolean(true)) !== 1) {
+ $ERROR('#4: (null ^ new Boolean(true)) === 1. Actual: ' + ((null ^ new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A1.js
new file mode 100644
index 000000000..ed3129958
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A1.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.10.3_A1;
+* @section: 11.10.3;
+* @assertion: White Space and Line Terminator between BitwiseORExpression and "|" or between "|" and BitwiseXORExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if ((eval("0\u0009|\u00091")) !== 1) {
+ $ERROR('#1: (0\\u0009|\\u00091) === 1');
+}
+
+//CHECK#2
+if ((eval("0\u000B|\u000B1")) !== 1) {
+ $ERROR('#2: (0\\u000B|\\u000B1) === 1');
+}
+
+//CHECK#3
+if ((eval("0\u000C|\u000C1")) !== 1) {
+ $ERROR('#3: (0\\u000C|\\u000C1) === 1');
+}
+
+//CHECK#4
+if ((eval("0\u0020|\u00201")) !== 1) {
+ $ERROR('#4: (0\\u0020|\\u00201) === 1');
+}
+
+//CHECK#5
+if ((eval("0\u00A0|\u00A01")) !== 1) {
+ $ERROR('#5: (0\\u00A0|\\u00A01) === 1');
+}
+
+//CHECK#6
+if ((eval("0\u000A|\u000A1")) !== 1) {
+ $ERROR('#6: (0\\u000A|\\u000A1) === 1');
+}
+
+//CHECK#7
+if ((eval("0\u000D|\u000D1")) !== 1) {
+ $ERROR('#7: (0\\u000D|\\u000D1) === 1');
+}
+
+//CHECK#8
+if ((eval("0\u2028|\u20281")) !== 1) {
+ $ERROR('#8: (0\\u2028|\\u20281) === 1');
+}
+
+//CHECK#9
+if ((eval("0\u2029|\u20291")) !== 1) {
+ $ERROR('#9: (0\\u2029|\\u20291) === 1');
+}
+
+
+//CHECK#10
+if ((eval("0\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029|\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 1) {
+ $ERROR('#10: (0\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029|\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T1.js
new file mode 100644
index 000000000..2b475cad3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A2.1_T1;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if ((1 | 0) !== 1) {
+ $ERROR('#1: (1 | 0) === 1. Actual: ' + ((1 | 0)));
+}
+
+//CHECK#2
+var x = 1;
+if ((x | 0) !== 1) {
+ $ERROR('#2: var x = 1; (x | 0) === 1. Actual: ' + ((x | 0)));
+}
+
+//CHECK#3
+var y = 0;
+if ((1 | y) !== 1) {
+ $ERROR('#3: var y = 0; (1 | y) === 1. Actual: ' + ((1 | y)));
+}
+
+//CHECK#4
+var x = 1;
+var y = 0;
+if ((x | y) !== 1) {
+ $ERROR('#4: var x = 1; var y = 0; (x | y) === 1. Actual: ' + ((x | y)));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 0;
+if ((objectx.prop | objecty.prop) !== 1) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 0; (objectx.prop | objecty.prop) === 1. Actual: ' + ((objectx.prop | objecty.prop)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T2.js
new file mode 100644
index 000000000..255be73ea
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A2.1_T2;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x | 1;
+ $ERROR('#1.1: x | 1 throw ReferenceError. Actual: ' + (x | 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x | 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T3.js
new file mode 100644
index 000000000..dc797d9f6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A2.1_T3;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 | y;
+ $ERROR('#1.1: 1 | y throw ReferenceError. Actual: ' + (1 | y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 | y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.2_T1.js
new file mode 100644
index 000000000..7aa0c1e6c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A2.2_T1;
+ * @section: 11.10.3, 8.6.2.6;
+ * @assertion: Operator x | y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if (({valueOf: function() {return 1}} | 0) !== 1) {
+ $ERROR('#1: ({valueOf: function() {return 1}} | 0) === 1. Actual: ' + (({valueOf: function() {return 1}} | 0)));
+}
+
+//CHECK#2
+if (({valueOf: function() {return 1}, toString: function() {return 0}} | 0) !== 1) {
+ $ERROR('#2: ({valueOf: function() {return 1}, toString: function() {return 0}} | 0) === 1. Actual: ' + (({valueOf: function() {return 1}, toString: function() {return 0}} | 0)));
+}
+
+//CHECK#3
+if (({valueOf: function() {return 1}, toString: function() {return {}}} | 0) !== 1) {
+ $ERROR('#3: ({valueOf: function() {return 1}, toString: function() {return {}}} | 0) === 1. Actual: ' + (({valueOf: function() {return 1}, toString: function() {return {}}} | 0)));
+}
+
+//CHECK#4
+try {
+ if (({valueOf: function() {return 1}, toString: function() {throw "error"}} | 0) !== 1) {
+ $ERROR('#4.1: ({valueOf: function() {return 1}, toString: function() {throw "error"}} | 0) === 1. Actual: ' + (({valueOf: function() {return 1}, toString: function() {throw "error"}} | 0)));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: ({valueOf: function() {return 1}, toString: function() {throw "error"}} | 0) not throw "error"');
+ } else {
+ $ERROR('#4.3: ({valueOf: function() {return 1}, toString: function() {throw "error"}} | 0) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if ((0 | {toString: function() {return 1}}) !== 1) {
+ $ERROR('#5: (0 | {toString: function() {return 1}}) === 1. Actual: ' + ((0 | {toString: function() {return 1}})));
+}
+
+//CHECK#6
+if ((0 | {valueOf: function() {return {}}, toString: function() {return 1}}) !== 1) {
+ $ERROR('#6: (0 | {valueOf: function() {return {}}, toString: function() {return 1}}) === 1. Actual: ' + ((0 | {valueOf: function() {return {}}, toString: function() {return 1}})));
+}
+
+//CHECK#7
+try {
+ 0 | {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: 0 | {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (0 | {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 0 | {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 0 | {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 0 | {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (0 | {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 0 | {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.3_T1.js
new file mode 100644
index 000000000..725253588
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A2.3_T1;
+ * @section: 11.10.3;
+ * @assertion: ToInt32(first expression) is called first, and then ToInt32(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x | y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x | y throw "x". Actual: ' + (x | y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToInt32(first expression) is called first, and then ToInt32(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x | y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T1.js
new file mode 100644
index 000000000..cef7c2502
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A2.4_T1;
+ * @section: 11.10.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 1;
+if (((x = 0) | x) !== 0) {
+ $ERROR('#1: var x = 1; ((x = 0) | x) === 0. Actual: ' + (((x = 0) | x)));
+}
+
+//CHECK#2
+var x = 1;
+if ((x | (x = 0)) !== 1) {
+ $ERROR('#2: var x = 1; (x | (x = 0)) === 1. Actual: ' + ((x | (x = 0))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T2.js
new file mode 100644
index 000000000..a528b2d61
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A2.4_T2;
+ * @section: 11.10.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() | y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() | y() throw "x". Actual: ' + (x() | y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() | y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T3.js
new file mode 100644
index 000000000..bd9b401a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A2.4_T3.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A2.4_T3;
+ * @section: 11.10.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x | (x = 1);
+ $ERROR('#1.1: x | (x = 1) throw ReferenceError. Actual: ' + (x | (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x | (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if (((y = 1) | y) !== 1) {
+ $ERROR('#2: ((y = 1) | y) === 1. Actual: ' + (((y = 1) | y)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.1.js
new file mode 100644
index 000000000..9d651b232
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T1.1;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if ((true | true) !== 1) {
+ $ERROR('#1: (true | true) === 1. Actual: ' + ((true | true)));
+}
+
+//CHECK#2
+if ((new Boolean(true) | true) !== 1) {
+ $ERROR('#2: (new Boolean(true) | true) === 1. Actual: ' + ((new Boolean(true) | true)));
+}
+
+//CHECK#3
+if ((true | new Boolean(true)) !== 1) {
+ $ERROR('#3: (true | new Boolean(true)) === 1. Actual: ' + ((true | new Boolean(true))));
+}
+
+//CHECK#4
+if ((new Boolean(true) | new Boolean(true)) !== 1) {
+ $ERROR('#4: (new Boolean(true) | new Boolean(true)) === 1. Actual: ' + ((new Boolean(true) | new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.2.js
new file mode 100644
index 000000000..1eb3d9851
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T1.2;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if ((1 | 1) !== 1) {
+ $ERROR('#1: (1 | 1) === 1. Actual: ' + ((1 | 1)));
+}
+
+//CHECK#2
+if ((new Number(1) | 1) !== 1) {
+ $ERROR('#2: (new Number(1) | 1) === 1. Actual: ' + ((new Number(1) | 1)));
+}
+
+//CHECK#3
+if ((1 | new Number(1)) !== 1) {
+ $ERROR('#3: (1 | new Number(1)) === 1. Actual: ' + ((1 | new Number(1))));
+}
+
+//CHECK#4
+if ((new Number(1) | new Number(1)) !== 1) {
+ $ERROR('#4: (new Number(1) | new Number(1)) === 1. Actual: ' + ((new Number(1) | new Number(1))));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.3.js
new file mode 100644
index 000000000..d754794d3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T1.3;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if (("1" | "1") !== 1) {
+ $ERROR('#1: ("1" | "1") === 1. Actual: ' + (("1" | "1")));
+}
+
+//CHECK#2
+if ((new String("1") | "1") !== 1) {
+ $ERROR('#2: (new String("1") | "1") === 1. Actual: ' + ((new String("1") | "1")));
+}
+
+//CHECK#3
+if (("1" | new String("1")) !== 1) {
+ $ERROR('#3: ("1" | new String("1")) === 1. Actual: ' + (("1" | new String("1"))));
+}
+
+//CHECK#4
+if ((new String("1") | new String("1")) !== 1) {
+ $ERROR('#4: (new String("1") | new String("1")) === 1. Actual: ' + ((new String("1") | new String("1"))));
+}
+
+//CHECK#5
+if (("x" | "1") !== 1) {
+ $ERROR('#5: ("x" | "1") === 1. Actual: ' + (("x" | "1")));
+}
+
+//CHECK#6
+if (("1" | "x") !== 1) {
+ $ERROR('#6: ("1" | "x") === 1. Actual: ' + (("1" | "x")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.4.js
new file mode 100644
index 000000000..0aa619af9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T1.4;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if ((null | undefined) !== 0) {
+ $ERROR('#1: (null | undefined) === 0. Actual: ' + ((null | undefined)));
+}
+
+//CHECK#2
+if ((undefined | null) !== 0) {
+ $ERROR('#2: (undefined | null) === 0. Actual: ' + ((undefined | null)));
+}
+
+//CHECK#3
+if ((undefined | undefined) !== 0) {
+ $ERROR('#3: (undefined | undefined) === 0. Actual: ' + ((undefined | undefined)));
+}
+
+//CHECK#4
+if ((null | null) !== 0) {
+ $ERROR('#4: (null | null) === 0. Actual: ' + ((null | null)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.5.js
new file mode 100644
index 000000000..91f712790
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T1.5.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T1.5;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (({} | function(){return 1}) !== 0) {
+ $ERROR('#1: ({} | function(){return 1}) === 0. Actual: ' + (({} | function(){return 1})));
+}
+
+//CHECK#2
+if ((function(){return 1} | {}) !== 0) {
+ $ERROR('#2: (function(){return 1} | {}) === 0. Actual: ' + ((function(){return 1} | {})));
+}
+
+//CHECK#3
+if ((function(){return 1} | function(){return 1}) !== 0) {
+ $ERROR('#3: (function(){return 1} | function(){return 1}) === 0. Actual: ' + ((function(){return 1} | function(){return 1})));
+}
+
+//CHECK#4
+if (({} | {}) !== 0) {
+ $ERROR('#4: ({} | {}) === 0. Actual: ' + (({} | {})));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.1.js
new file mode 100644
index 000000000..770aba721
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T2.1;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if ((true | 1) !== 1) {
+ $ERROR('#1: (true | 1) === 1. Actual: ' + ((true | 1)));
+}
+
+//CHECK#2
+if ((1 | true) !== 1) {
+ $ERROR('#2: (1 | true) === 1. Actual: ' + ((1 | true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) | 1) !== 1) {
+ $ERROR('#3: (new Boolean(true) | 1) === 1. Actual: ' + ((new Boolean(true) | 1)));
+}
+
+//CHECK#4
+if ((1 | new Boolean(true)) !== 1) {
+ $ERROR('#4: (1 | new Boolean(true)) === 1. Actual: ' + ((1 | new Boolean(true))));
+}
+
+//CHECK#5
+if ((true | new Number(1)) !== 1) {
+ $ERROR('#5: (true | new Number(1)) === 1. Actual: ' + ((true | new Number(1))));
+}
+
+//CHECK#6
+if ((new Number(1) | true) !== 1) {
+ $ERROR('#6: (new Number(1) | true) === 1. Actual: ' + ((new Number(1) | true)));
+}
+
+//CHECK#7
+if ((new Boolean(true) | new Number(1)) !== 1) {
+ $ERROR('#7: (new Boolean(true) | new Number(1)) === 1. Actual: ' + ((new Boolean(true) | new Number(1))));
+}
+
+//CHECK#8
+if ((new Number(1) | new Boolean(true)) !== 1) {
+ $ERROR('#8: (new Number(1) | new Boolean(true)) === 1. Actual: ' + ((new Number(1) | new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.2.js
new file mode 100644
index 000000000..33c5e40b3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T2.2;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if (("1" | 1) !== 1) {
+ $ERROR('#1: ("1" | 1) === 1. Actual: ' + (("1" | 1)));
+}
+
+//CHECK#2
+if ((1 | "1") !== 1) {
+ $ERROR('#2: (1 | "1") === 1. Actual: ' + ((1 | "1")));
+}
+
+//CHECK#3
+if ((new String("1") | 1) !== 1) {
+ $ERROR('#3: (new String("1") | 1) === 1. Actual: ' + ((new String("1") | 1)));
+}
+
+//CHECK#4
+if ((1 | new String("1")) !== 1) {
+ $ERROR('#4: (1 | new String("1")) === 1. Actual: ' + ((1 | new String("1"))));
+}
+
+//CHECK#5
+if (("1" | new Number(1)) !== 1) {
+ $ERROR('#5: ("1" | new Number(1)) === 1. Actual: ' + (("1" | new Number(1))));
+}
+
+//CHECK#6
+if ((new Number(1) | "1") !== 1) {
+ $ERROR('#6: (new Number(1) | "1") === 1. Actual: ' + ((new Number(1) | "1")));
+}
+
+//CHECK#7
+if ((new String("1") | new Number(1)) !== 1) {
+ $ERROR('#7: (new String("1") | new Number(1)) === 1. Actual: ' + ((new String("1") | new Number(1))));
+}
+
+//CHECK#8
+if ((new Number(1) | new String("1")) !== 1) {
+ $ERROR('#8: (new Number(1) | new String("1")) === 1. Actual: ' + ((new Number(1) | new String("1"))));
+}
+
+//CHECK#9
+if (("x" | 1) !== 1) {
+ $ERROR('#9: ("x" | 1) === 1. Actual: ' + (("x" | 1)));
+}
+
+//CHECK#10
+if ((1 | "x") !== 1) {
+ $ERROR('#10: (1 | "x") === 1. Actual: ' + ((1 | "x")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.3.js
new file mode 100644
index 000000000..d581f0afa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T2.3;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ((1 | null) !== 1) {
+ $ERROR('#1: (1 | null) === 1. Actual: ' + ((1 | null)));
+}
+
+//CHECK#2
+if ((null | 1) !== 1) {
+ $ERROR('#2: (null | 1) === 1. Actual: ' + ((null | 1)));
+}
+
+//CHECK#3
+if ((new Number(1) | null) !== 1) {
+ $ERROR('#3: (new Number(1) | null) === 1. Actual: ' + ((new Number(1) | null)));
+}
+
+//CHECK#4
+if ((null | new Number(1)) !== 1) {
+ $ERROR('#4: (null | new Number(1)) === 1. Actual: ' + ((null | new Number(1))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.4.js
new file mode 100644
index 000000000..f8608ff6a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T2.4;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ((1 | undefined) !== 1) {
+ $ERROR('#1: (1 | undefined) === 1. Actual: ' + ((1 | undefined)));
+}
+
+//CHECK#2
+if ((undefined | 1) !== 1) {
+ $ERROR('#2: (undefined | 1) === 1. Actual: ' + ((undefined | 1)));
+}
+
+//CHECK#3
+if ((new Number(1) | undefined) !== 1) {
+ $ERROR('#3: (new Number(1) | undefined) === 1. Actual: ' + ((new Number(1) | undefined)));
+}
+
+//CHECK#4
+if ((undefined | new Number(1)) !== 1) {
+ $ERROR('#4: (undefined | new Number(1)) === 1. Actual: ' + ((undefined | new Number(1))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.5.js
new file mode 100644
index 000000000..8c65d951f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T2.5;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if ((true | "1") !== 1) {
+ $ERROR('#1: (true | "1") === 1. Actual: ' + ((true | "1")));
+}
+
+//CHECK#2
+if (("1" | true) !== 1) {
+ $ERROR('#2: ("1" | true) === 1. Actual: ' + (("1" | true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) | "1") !== 1) {
+ $ERROR('#3: (new Boolean(true) | "1") === 1. Actual: ' + ((new Boolean(true) | "1")));
+}
+
+//CHECK#4
+if (("1" | new Boolean(true)) !== 1) {
+ $ERROR('#4: ("1" | new Boolean(true)) === 1. Actual: ' + (("1" | new Boolean(true))));
+}
+
+//CHECK#5
+if ((true | new String("1")) !== 1) {
+ $ERROR('#5: (true | new String("1")) === 1. Actual: ' + ((true | new String("1"))));
+}
+
+//CHECK#6
+if ((new String("1") | true) !== 1) {
+ $ERROR('#6: (new String("1") | true) === 1. Actual: ' + ((new String("1") | true)));
+}
+
+//CHECK#7
+if ((new Boolean(true) | new String("1")) !== 1) {
+ $ERROR('#7: (new Boolean(true) | new String("1")) === 1. Actual: ' + ((new Boolean(true) | new String("1"))));
+}
+
+//CHECK#8
+if ((new String("1") | new Boolean(true)) !== 1) {
+ $ERROR('#8: (new String("1") | new Boolean(true)) === 1. Actual: ' + ((new String("1") | new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.6.js
new file mode 100644
index 000000000..a5a04513f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T2.6;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (("1" | undefined) !== 1) {
+ $ERROR('#1: ("1" | undefined) === 1. Actual: ' + (("1" | undefined)));
+}
+
+//CHECK#2
+if ((undefined | "1") !== 1) {
+ $ERROR('#2: (undefined | "1") === 1. Actual: ' + ((undefined | "1")));
+}
+
+//CHECK#3
+if ((new String("1") | undefined) !== 1) {
+ $ERROR('#3: (new String("1") | undefined) === 1. Actual: ' + ((new String("1") | undefined)));
+}
+
+//CHECK#4
+if ((undefined | new String("1")) !== 1) {
+ $ERROR('#4: (undefined | new String("1")) === 1. Actual: ' + ((undefined | new String("1"))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.7.js
new file mode 100644
index 000000000..1f65aa0cb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T2.7;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (("1" | null) !== 1) {
+ $ERROR('#1: ("1" | null) === 1. Actual: ' + (("1" | null)));
+}
+
+//CHECK#2
+if ((null | "1") !== 1) {
+ $ERROR('#2: (null | "1") === 1. Actual: ' + ((null | "1")));
+}
+
+//CHECK#3
+if ((new String("1") | null) !== 1) {
+ $ERROR('#3: (new String("1") | null) === 1. Actual: ' + ((new String("1") | null)));
+}
+
+//CHECK#4
+if ((null | new String("1")) !== 1) {
+ $ERROR('#4: (null | new String("1")) === 1. Actual: ' + ((null | new String("1"))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.8.js
new file mode 100644
index 000000000..4cf9d8747
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T2.8;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ((true | undefined) !== 1) {
+ $ERROR('#1: (true | undefined) === 1. Actual: ' + ((true | undefined)));
+}
+
+//CHECK#2
+if ((undefined | true) !== 1) {
+ $ERROR('#2: (undefined | true) === 1. Actual: ' + ((undefined | true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) | undefined) !== 1) {
+ $ERROR('#3: (new Boolean(true) | undefined) === 1. Actual: ' + ((new Boolean(true) | undefined)));
+}
+
+//CHECK#4
+if ((undefined | new Boolean(true)) !== 1) {
+ $ERROR('#4: (undefined | new Boolean(true)) === 1. Actual: ' + ((undefined | new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.9.js
new file mode 100644
index 000000000..5d5b56fb1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.10_Binary_Bitwise_Operators/11.10.3_OR_Operator/S11.10.3_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.10.3_A3_T2.9;
+ * @section: 11.10.3;
+ * @assertion: Operator x | y returns ToNumber(x) | ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ((true | null) !== 1) {
+ $ERROR('#1: (true | null) === 1. Actual: ' + ((true | null)));
+}
+
+//CHECK#2
+if ((null | true) !== 1) {
+ $ERROR('#2: (null | true) === 1. Actual: ' + ((null | true)));
+}
+
+//CHECK#3
+if ((new Boolean(true) | null) !== 1) {
+ $ERROR('#3: (new Boolean(true) | null) === 1. Actual: ' + ((new Boolean(true) | null)));
+}
+
+//CHECK#4
+if ((null | new Boolean(true)) !== 1) {
+ $ERROR('#4: (null | new Boolean(true)) === 1. Actual: ' + ((null | new Boolean(true))));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A1.js
new file mode 100644
index 000000000..56331035c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A1.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A1;
+* @section: 11.11.1;
+* @assertion: White Space and Line Terminator between LogicalANDExpression and "&&" or between "&&" and BitwiseORExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if ((eval("true\u0009&&\u0009true")) !== true) {
+ $ERROR('#1: (true\\u0009&&\\u0009true) === true');
+}
+
+//CHECK#2
+if ((eval("true\u000B&&\u000Btrue")) !== true) {
+ $ERROR('#2: (true\\u000B&&\\u000Btrue) === true');
+}
+
+//CHECK#3
+if ((eval("true\u000C&&\u000Ctrue")) !== true) {
+ $ERROR('#3: (true\\u000C&&\\u000Ctrue) === true');
+}
+
+//CHECK#4
+if ((eval("true\u0020&&\u0020true")) !== true) {
+ $ERROR('#4: (true\\u0020&&\\u0020true) === true');
+}
+
+//CHECK#5
+if ((eval("true\u00A0&&\u00A0true")) !== true) {
+ $ERROR('#5: (true\\u00A0&&\\u00A0true) === true');
+}
+
+//CHECK#6
+if ((eval("true\u000A&&\u000Atrue")) !== true) {
+ $ERROR('#6: (true\\u000A&&\\u000Atrue) === true');
+}
+
+//CHECK#7
+if ((eval("true\u000D&&\u000Dtrue")) !== true) {
+ $ERROR('#7: (true\\u000D&&\\u000Dtrue) === true');
+}
+
+//CHECK#8
+if ((eval("true\u2028&&\u2028true")) !== true) {
+ $ERROR('#8: (true\\u2028&&\\u2028true) === true');
+}
+
+//CHECK#9
+if ((eval("true\u2029&&\u2029true")) !== true) {
+ $ERROR('#9: (true\\u2029&&\\u2029true) === true');
+}
+
+
+//CHECK#10
+if ((eval("true\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029&&\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true")) !== true) {
+ $ERROR('#10: (true\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029&&\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T1.js
new file mode 100644
index 000000000..16940f2cb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T1.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A2.1_T1;
+* @section: 11.11.1, 8.7.1;
+* @assertion: Operator x && y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if ((false && true) !== false) {
+ $ERROR('#1: (false && true) === false');
+}
+
+//CHECK#2
+if ((true && false) !== false) {
+ $ERROR('#2: (true && false) === false');
+}
+
+//CHECK#3
+var x = false;
+if ((x && true) !== false) {
+ $ERROR('#3: var x = false; (x && true) === false');
+}
+
+//CHECK#4
+var y = new Boolean(false);
+if ((true && y) !== y) {
+ $ERROR('#4: var y = new Boolean(false); (true && y) === y');
+}
+
+//CHECK#5
+var x = false;
+var y = true;
+if ((x && y) !== false) {
+ $ERROR('#5: var x = false; var y = true; (x && y) === false');
+}
+
+//CHECK#6
+var x = true;
+var y = new Boolean(false);
+if ((x && y) !== y) {
+ $ERROR('#6: var x = true; var y = new Boolean(false); (x && y) === y');
+}
+
+//CHECK#7
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = true;
+objecty.prop = 1.1;
+if ((objectx.prop && objecty.prop) !== objecty.prop) {
+ $ERROR('#7: var objectx = new Object(); var objecty = new Object(); objectx.prop = true; objecty.prop = 1; (objectx.prop && objecty.prop) === objecty.prop');
+}
+
+//CHECK#8
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 0;
+objecty.prop = true;
+if ((objectx.prop && objecty.prop) !== objectx.prop) {
+ $ERROR('#8: var objectx = new Object(); var objecty = new Object(); objectx.prop = 0; objecty.prop = true; (objectx.prop && objecty.prop) === objectx.prop');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T2.js
new file mode 100644
index 000000000..68a1e2f54
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A2.1_T2;
+* @section: 11.11.1, 8.7.1;
+* @assertion: Operator x && y uses GetValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x && true;
+ $ERROR('#1.1: x && true throw ReferenceError. Actual: ' + (x && true));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x && true throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T3.js
new file mode 100644
index 000000000..2293761cc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A2.1_T3;
+* @section: 11.11.1, 8.7.1;
+* @assertion: Operator x && y uses GetValue;
+* @description: If ToBoolean(x) is true and GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ true && y;
+ $ERROR('#1.1: true && y throw ReferenceError. Actual: ' + (true && y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: true && y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T4.js
new file mode 100644
index 000000000..96378fd12
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.1_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A2.1_T4;
+* @section: 11.11.1, 8.7.1, 16;
+* @assertion: Operator x && y uses GetValue;
+* @description: If ToBoolean(x) is false and GetBase(y) is null, return false;
+*/
+
+//CHECK#1
+if ((false && x) !== false) {
+ $ERROR('#1: (false && x) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T1.js
new file mode 100644
index 000000000..d8f764904
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.11.1_A2.4_T1;
+ * @section: 11.11.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = false;
+if (((x = true) && x) !== true) {
+ $ERROR('#1: var x = false; ((x = true) && x) === true');
+}
+
+//CHECK#2
+var x = false;
+if ((x && (x = true)) !== false) {
+ $ERROR('#2: var x = false; (x && (x = true)) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T2.js
new file mode 100644
index 000000000..1e317d248
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.11.1_A2.4_T2;
+ * @section: 11.11.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() && y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() && y() throw "x". Actual: ' + (x() && y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() && y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T3.js
new file mode 100644
index 000000000..2be5f21b6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.11.1_A2.4_T3;
+ * @section: 11.11.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x && (x = true);
+ $ERROR('#1.1: x && (x = true) throw ReferenceError. Actual: ' + (x && (x = true)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x && (x = true) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if (((y = true) && y) !== true) {
+ $ERROR('#2: ((y = true) && y) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T1.js
new file mode 100644
index 000000000..4a93383fa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A3_T1;
+* @section: 11.11.1;
+* @assertion: If ToBoolean(x) is false, return x;
+* @description: Type(x) is primitive boolean and Type(y) is changed between primitive boolean and Boolean object;
+*/
+
+//CHECK#1
+if ((false && true) !== false) {
+ $ERROR('#1: (false && true) === false');
+}
+
+//CHECK#2
+if ((false && false) !== false) {
+ $ERROR('#2: (false && false) === false');
+}
+
+//CHECK#3
+if ((false && new Boolean(true)) !== false) {
+ $ERROR('#3: (false && new Boolean(true)) === false');
+}
+
+//CHECK#4
+if ((false && new Boolean(false)) !== false) {
+ $ERROR('#4: (false && new Boolean(false)) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T2.js
new file mode 100644
index 000000000..8eb71f0c1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.11.1_A3_T2;
+ * @section: 11.11.1;
+ * @assertion: If ToBoolean(x) is false, return x;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+ */
+
+//CHECK#1
+if ((-0 && -1) !== 0) {
+ $ERROR('#1.1: (-0 && -1) === 0');
+} else {
+ if ((1 / (-0 && -1)) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#1.2: (-0 && -1) === -0');
+ }
+}
+
+//CHECK#2
+if ((0 && new Number(-1)) !== 0) {
+ $ERROR('#2.1: (0 && new Number(-1)) === 0');
+} else {
+ if ((1 / (0 && new Number(-1))) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: (0 && new Number(-1)) === +0');
+ }
+}
+
+//CHECK#3
+if ((isNaN(NaN && 1)) !== true) {
+ $ERROR('#3: (NaN && 1) === Not-a-Number');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T3.js
new file mode 100644
index 000000000..ba5e4b2b5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T3.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A3_T3;
+* @section: 11.11.1;
+* @assertion: If ToBoolean(x) is false, return x;
+* @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if (("" && "1") !== "") {
+ $ERROR('#1: ("" && "1") === ""');
+}
+
+//CHECK#2
+if (("" && new String("1")) !== "") {
+ $ERROR('#2: ("" && new String("1")) === ""');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T4.js
new file mode 100644
index 000000000..cbb05d875
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A3_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A3_T4;
+* @section: 11.11.1;
+* @assertion: If ToBoolean(x) is false, return x;
+* @description: Type(x) or Type(y) is changed between null and undefined;
+*/
+
+//CHECK#1
+if ((undefined && true) !== undefined) {
+ $ERROR('#1: (undefined && true) === undefined');
+}
+
+//CHECK#2
+if ((null && false) !== null) {
+ $ERROR('#2: (null && false) === null');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T1.js
new file mode 100644
index 000000000..2858d5421
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A4_T1;
+* @section: 11.11.1;
+* @assertion: If ToBoolean(x) is true, return y;
+* @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+*/
+
+//CHECK#1
+if ((true && true) !== true) {
+ $ERROR('#1: (true && true) === true');
+}
+
+//CHECK#2
+if ((true && false) !== false) {
+ $ERROR('#2: (true && false) === false');
+}
+
+//CHECK#3
+var y = new Boolean(true);
+if ((new Boolean(true) && y) !== y) {
+ $ERROR('#3: (var y = new Boolean(true); (new Boolean(true) && y) === y');
+}
+
+//CHECK#4
+var y = new Boolean(false);
+if ((new Boolean(true) && y) !== y) {
+ $ERROR('#4: (var y = new Boolean(false); (new Boolean(true) && y) === y');
+}
+
+//CHECK#5
+var y = new Boolean(true);
+if ((new Boolean(false) && y) !== y) {
+ $ERROR('#5: (var y = new Boolean(true); (new Boolean(false) && y) === y');
+}
+
+//CHECK#6
+var y = new Boolean(false);
+if ((new Boolean(false) && y) !== y) {
+ $ERROR('#6: (var y = new Boolean(false); (new Boolean(false) && y) === y');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T2.js
new file mode 100644
index 000000000..55b26f29e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T2.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A4_T2;
+* @section: 11.11.1;
+* @assertion: If ToBoolean(x) is true, return y;
+* @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if ((-1 && -0) !== 0) {
+ $ERROR('#1.1: (-1 && -0) === 0');
+} else {
+ if ((1 / (-1 && -0)) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#1.2: (-1 && -0) === -0');
+ }
+}
+
+//CHECK#2
+if ((-1 && 0) !== 0) {
+ $ERROR('#2.1: (-1 && 0) === 0');
+} else {
+ if ((1 / (-1 && 0)) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: (-1 && 0) === +0');
+ }
+}
+
+//CHECK#3
+if ((isNaN(0.1 && NaN)) !== true) {
+ $ERROR('#3: (0.1 && NaN) === Not-a-Number');
+}
+
+//CHECK#4
+var y = new Number(0);
+if ((new Number(-1) && y) !== y) {
+ $ERROR('#4: (var y = new Number(0); (new Number(-1) && y) === y');
+}
+
+//CHECK#5
+var y = new Number(NaN);
+if ((new Number(0) && y) !== y) {
+ $ERROR('#5: (var y = new Number(NaN); (new Number(0) && y) === y');
+}
+
+//CHECK#6
+var y = new Number(-1);
+if ((new Number(NaN) && y) !== y) {
+ $ERROR('#6: (var y = new Number(-1); (new Number(NaN) && y) === y');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T3.js
new file mode 100644
index 000000000..faf87656a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T3.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A4_T3;
+* @section: 11.11.1;
+* @assertion: If ToBoolean(x) is true, return y;
+* @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if (("0" && "-1") !== "-1") {
+ $ERROR('#-1: ("0" && "-1") === "-1"');
+}
+
+//CHECK#2
+if (("-1" && "x") !== "x") {
+ $ERROR('#2: ("-1" && "x") === "x"');
+}
+
+//CHECK#3
+var y = new String(-1);
+if ((new String("-1") && y) !== y) {
+ $ERROR('#3: (var y = new String(-1); (new String("-1") && y) === y');
+}
+
+//CHECK#4
+var y = new String(NaN);
+if ((new String("0") && y) !== y) {
+ $ERROR('#4: (var y = new String(NaN); (new String("0") && y) === y');
+}
+
+//CHECK#5
+var y = new String("-x");
+if ((new String("x") && y) !== y) {
+ $ERROR('#5: (var y = new String("-x"); (new String("x") && y) === y');
+}
+
+//CHECK#6
+var y = new String(-1);
+if ((new String(NaN) && y) !== y) {
+ $ERROR('#6: (var y = new String(-1); (new String(NaN) && y) === y');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T4.js
new file mode 100644
index 000000000..f6e66e7ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.1_Logical_AND_Operator/S11.11.1_A4_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.1_A4_T4;
+* @section: 11.11.1;
+* @assertion: If ToBoolean(x) is true, return y;
+* @description: Type(x) or Type(y) is changed between null and undefined;
+*/
+
+//CHECK#1
+if ((true && undefined) !== undefined) {
+ $ERROR('#1: (true && undefined) === undefined');
+}
+
+//CHECK#2
+if ((true && null) !== null) {
+ $ERROR('#2: (true && null) === null');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A1.js
new file mode 100644
index 000000000..243b6a399
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A1.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A1;
+* @section: 11.11.2;
+* @assertion: White Space and Line Terminator between LogicalORExpression and "||" or between "||" and LogicalANDExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if ((eval("false\u0009||\u0009true")) !== true) {
+ $ERROR('#1: (false\\u0009||\\u0009true) === true');
+}
+
+//CHECK#2
+if ((eval("false\u000B||\u000Btrue")) !== true) {
+ $ERROR('#2: (false\\u000B||\\u000Btrue) === true');
+}
+
+//CHECK#3
+if ((eval("false\u000C||\u000Ctrue")) !== true) {
+ $ERROR('#3: (false\\u000C||\\u000Ctrue) === true');
+}
+
+//CHECK#4
+if ((eval("false\u0020||\u0020true")) !== true) {
+ $ERROR('#4: (false\\u0020||\\u0020true) === true');
+}
+
+//CHECK#5
+if ((eval("false\u00A0||\u00A0true")) !== true) {
+ $ERROR('#5: (false\\u00A0||\\u00A0true) === true');
+}
+
+//CHECK#6
+if ((eval("false\u000A||\u000Atrue")) !== true) {
+ $ERROR('#6: (false\\u000A||\\u000Atrue) === true');
+}
+
+//CHECK#7
+if ((eval("false\u000D||\u000Dtrue")) !== true) {
+ $ERROR('#7: (false\\u000D||\\u000Dtrue) === true');
+}
+
+//CHECK#8
+if ((eval("false\u2028||\u2028true")) !== true) {
+ $ERROR('#8: (false\\u2028||\\u2028true) === true');
+}
+
+//CHECK#9
+if ((eval("false\u2029||\u2029true")) !== true) {
+ $ERROR('#9: (false\\u2029||\\u2029true) === true');
+}
+
+
+//CHECK#10
+if ((eval("false\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029||\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true")) !== true) {
+ $ERROR('#10: (false\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029||\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T1.js
new file mode 100644
index 000000000..8e07263ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T1.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A2.1_T1;
+* @section: 11.11.2, 8.7.1;
+* @assertion: Operator x || y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if ((true || false) !== true) {
+ $ERROR('#1: (true || false) === true');
+}
+
+//CHECK#2
+if ((false || true) !== true) {
+ $ERROR('#2: (false || true) === true');
+}
+
+//CHECK#3
+var x = new Boolean(false);
+if ((x || true) !== x) {
+ $ERROR('#3: var x = Boolean(false); (x || true) === x');
+}
+
+//CHECK#4
+var y = new Boolean(true);
+if ((false || y) !== y) {
+ $ERROR('#4: var y = Boolean(true); (false || y) === y');
+}
+
+//CHECK#5
+var x = new Boolean(false);
+var y = new Boolean(true);
+if ((x || y) !== x) {
+ $ERROR('#5: var x = new Boolean(false); var y = new Boolean(true); (x || y) === x');
+}
+
+//CHECK#6
+var x = false;
+var y = new Boolean(true);
+if ((x || y) !== y) {
+ $ERROR('#6: var x = false; var y = new Boolean(true); (x || y) === y');
+}
+
+//CHECK#7
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = false;
+objecty.prop = 1.1;
+if ((objectx.prop || objecty.prop) !== objecty.prop) {
+ $ERROR('#7: var objectx = new Object(); var objecty = new Object(); objectx.prop = false; objecty.prop = 1; (objectx.prop || objecty.prop) === objecty.prop');
+}
+
+//CHECK#8
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1.1;
+objecty.prop = false;
+if ((objectx.prop || objecty.prop) !== objectx.prop) {
+ $ERROR('#8: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1.1; objecty.prop = false; (objectx.prop || objecty.prop) === objectx.prop');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T2.js
new file mode 100644
index 000000000..e161582fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A2.1_T2;
+* @section: 11.11.2, 8.7.1;
+* @assertion: Operator x || y uses GetValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x || true;
+ $ERROR('#1.1: x || true throw ReferenceError. Actual: ' + (x || true));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x || true throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T3.js
new file mode 100644
index 000000000..8e238c45d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A2.1_T3;
+* @section: 11.11.2, 8.7.1;
+* @assertion: Operator x || y uses GetValue;
+* @description: If ToBoolean(x) is false and GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ false || y;
+ $ERROR('#1.1: false || y throw ReferenceError. Actual: ' + (false || y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: false || y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T4.js
new file mode 100644
index 000000000..7a9614879
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.1_T4.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A2.1_T4;
+* @section: 11.11.2, 8.7.1, 16;
+* @assertion: Operator x || y uses GetValue;
+* @description: If ToBoolean(x) is true and GetBase(y) is null, return true;
+*/
+
+//CHECK#1
+if ((true || x) !== true) {
+ $ERROR('#1: (true || x) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T1.js
new file mode 100644
index 000000000..5080e90af
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.11.2_A2.4_T1;
+ * @section: 11.11.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = true;
+if (((x = false) || x) !== false) {
+ $ERROR('#1: var x = true; ((x = false) || x) === false');
+}
+
+//CHECK#2
+var x = true;
+if ((x || (x = false)) !== true) {
+ $ERROR('#2: var x = true; (x || (x = false)) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T2.js
new file mode 100644
index 000000000..8aa181c25
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.11.2_A2.4_T2;
+ * @section: 11.11.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() || y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() || y() throw "x". Actual: ' + (x() || y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() || y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T3.js
new file mode 100644
index 000000000..49f5a3949
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.11.2_A2.4_T3;
+ * @section: 11.11.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x || (x = true);
+ $ERROR('#1.1: x || (x = true) throw ReferenceError. Actual: ' + (x || (x = true)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x || (x = true) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if (((y = true) || y) !== true) {
+ $ERROR('#2: ((y = true) || y) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T1.js
new file mode 100644
index 000000000..7200f99d3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A3_T1;
+* @section: 11.11.2;
+* @assertion: If ToBoolean(x) is false, return y;
+* @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+*/
+
+//CHECK#1
+if ((false || true) !== true) {
+ $ERROR('#1: (false || true) === true');
+}
+
+//CHECK#2
+if ((false || false) !== false) {
+ $ERROR('#2: (false || false) === false');
+}
+
+//CHECK#3
+var y = new Boolean(true);
+if ((false || y) !== y) {
+ $ERROR('#3: (var y = new Boolean(true); false || y) === y');
+}
+
+//CHECK#4
+var y = new Boolean(false);
+if ((false || y) !== y) {
+ $ERROR('#4: (var y = new Boolean(false); false || y) === y');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T2.js
new file mode 100644
index 000000000..08f8cd4e8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.11.2_A3_T2;
+ * @section: 11.11.2;
+ * @assertion: If ToBoolean(x) is false, return y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+ */
+
+//CHECK#1
+if ((0 || -0) !== 0) {
+ $ERROR('#1.1: (0 || -0) === 0');
+} else {
+ if ((1 / (0 || -0)) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#1.2: (0 || -0) === -0');
+ }
+}
+
+//CHECK#2
+if ((-0 || 0) !== 0) {
+ $ERROR('#2.1: (-0 || 0) === 0');
+} else {
+ if ((1 / (-0 || 0)) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: (-0 || 0) === +0');
+ }
+}
+
+//CHECK#3
+var y = new Number(-1);
+if ((0 || y) !== y) {
+ $ERROR('#3: (var y = new Number(-1); 0 || y) === y');
+}
+
+//CHECK#4
+var y = new Number(0);
+if ((NaN || y) !== y) {
+ $ERROR('#4: (var y = new Number(0); NaN || y) === y');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T3.js
new file mode 100644
index 000000000..56a18ceff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A3_T3;
+* @section: 11.11.2;
+* @assertion: If ToBoolean(x) is false, return y;
+* @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if (("" || "1") !== "1") {
+ $ERROR('#1: ("" || "1") === "1"');
+}
+
+//CHECK#2
+var y = new String("1");
+if (("" || y) !== y) {
+ $ERROR('#2: (var y = new String("1"); "" || y) === y');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T4.js
new file mode 100644
index 000000000..bf45e48ac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A3_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A3_T4;
+* @section: 11.11.2;
+* @assertion: If ToBoolean(x) is false, return y;
+* @description: Type(x) or Type(y) is changed between null and undefined;
+*/
+
+//CHECK#1
+if ((false || undefined) !== undefined) {
+ $ERROR('#1: (false || undefined) === undefined');
+}
+
+//CHECK#2
+if ((false || null) !== null) {
+ $ERROR('#2: (false || null) === null');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T1.js
new file mode 100644
index 000000000..c26fc64a8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A4_T1;
+* @section: 11.11.2;
+* @assertion: If ToBoolean(x) is true, return x;
+* @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+*/
+
+//CHECK#1
+if (((true || true)) !== true) {
+ $ERROR('#1: (true || true) === true');
+}
+
+//CHECK#2
+if ((true || false) !== true) {
+ $ERROR('#2: (true || false) === true');
+}
+
+//CHECK#3
+var x = new Boolean(true);
+if ((x || new Boolean(true)) !== x) {
+ $ERROR('#3: (var x = new Boolean(true); (x || new Boolean(true)) === x');
+}
+
+//CHECK#4
+var x = new Boolean(true);
+if ((x || new Boolean(false)) !== x) {
+ $ERROR('#4: (var x = new Boolean(true); (x || new Boolean(false)) === x');
+}
+
+//CHECK#5
+var x = new Boolean(false);
+if ((x || new Boolean(true)) !== x) {
+ $ERROR('#5: (var x = new Boolean(false); (x || new Boolean(true)) === x');
+}
+
+//CHECK#6
+var x = new Boolean(false);
+if ((x || new Boolean(false)) !== x) {
+ $ERROR('#6: (var x = new Boolean(false); (x || new Boolean(false)) === x');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T2.js
new file mode 100644
index 000000000..684e0e293
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T2.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A4_T2;
+* @section: 11.11.2;
+* @assertion: If ToBoolean(x) is true, return x;
+* @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if ((-1 || 1) !== -1) {
+ $ERROR('#1: (-1 || 1) === -1');
+}
+
+//CHECK#2
+if ((1 || new Number(0)) !== 1) {
+ $ERROR('#2: (1 || new Number(0)) === 1');
+}
+
+//CHECK#3
+if ((-1 || NaN) !== -1) {
+ $ERROR('#3: (-1 || NaN) === -1');
+}
+
+//CHECK#4
+var x = new Number(-1);
+if ((x || new Number(0)) !== x) {
+ $ERROR('#4: (var x = new Number(-1); (x || new Number(-1)) === x');
+}
+
+//CHECK#5
+var x = new Number(NaN);
+if ((x || new Number(1)) !== x) {
+ $ERROR('#5: (var x = new Number(NaN); (x || new Number(1)) === x');
+}
+
+//CHECK#6
+var x = new Number(0);
+if ((x || new Number(NaN)) !== x) {
+ $ERROR('#6: (var x = new Number(0); (x || new Number(NaN)) === x');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T3.js
new file mode 100644
index 000000000..247722d21
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T3.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A4_T3;
+* @section: 11.11.2;
+* @assertion: If ToBoolean(x) is true, return x;
+* @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if (("-1" || "1") !== "-1") {
+ $ERROR('#-1: ("-1" || "1") === "-1"');
+}
+
+//CHECK#2
+if (("-1" || "x") !== "-1") {
+ $ERROR('#2: ("-1" || "x") === "-1"');
+}
+
+//CHECK#3
+var x = new String("-1");
+if ((x || new String(-1)) !== x) {
+ $ERROR('#3: (var x = new String("-1"); (x || new String(-1)) === x');
+}
+
+//CHECK#4
+var x = new String(NaN);
+if ((x || new String("1")) !== x) {
+ $ERROR('#4: (var x = new String(NaN); (x || new String("1")) === x');
+}
+
+//CHECK#5
+var x = new String("-x");
+if ((x || new String("x")) !== x) {
+ $ERROR('#5: (var x = new String("-x"); (x || new String("x")) === x');
+}
+
+//CHECK#6
+var x = new String(0);
+if ((x || new String(NaN)) !== x) {
+ $ERROR('#6: (var x = new String(0); (x || new String(NaN)) === x');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T4.js
new file mode 100644
index 000000000..8658881ed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.11_Binary_Logical_Operators/11.11.2_Logical_OR_Operator/S11.11.2_A4_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.11.2_A4_T4;
+* @section: 11.11.2;
+* @assertion: If ToBoolean(x) is true, return x;
+* @description: Type(x) or Type(y) vary between Null and Undefined;
+*/
+
+//CHECK#1
+if ((true || undefined) !== true) {
+ $ERROR('#1: (true || undefined) === true');
+}
+
+//CHECK#2
+if ((true || null) !== true) {
+ $ERROR('#2: (true || null) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A1.js
new file mode 100644
index 000000000..2e4d3f23a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A1;
+* @section: 11.12;
+* @assertion: White Space and Line Terminator between LogicalORExpression and "?" or between "?" and AssignmentExpression or between AssignmentExpression and ":" or between ":" and AssignmentExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if ((eval("false\u0009?\u0009true\u0009:\u0009true")) !== true) {
+ $ERROR('#1: (false\\u0009?\\u0009true\\u0009:\\u0009true) === true');
+}
+
+//CHECK#2
+if ((eval("false\u000B?\u000Btrue\u000B:\u000Btrue")) !== true) {
+ $ERROR('#2: (false\\u000B?\\u000Btrue\\u000B:\\u000Btrue) === true');
+}
+
+//CHECK#3
+if ((eval("false\u000C?\u000Ctrue\u000C:\u000Ctrue")) !== true) {
+ $ERROR('#3: (false\\u000C?\\u000Ctrue\\u000C:\\u000Ctrue) === true');
+}
+
+//CHECK#4
+if ((eval("false\u0020?\u0020true\u0020:\u0020true")) !== true) {
+ $ERROR('#4: (false\\u0020?\\u0020true\\u0020:\\u0020true) === true');
+}
+
+//CHECK#5
+if ((eval("false\u00A0?\u00A0true\u00A0:\u00A0true")) !== true) {
+ $ERROR('#5: (false\\u00A0?\\u00A0true\\u00A0:\\u00A0true) === true');
+}
+
+//CHECK#6
+if ((eval("false\u000A?\u000Atrue\u000A:\u000Atrue")) !== true) {
+ $ERROR('#6: (false\\u000A?\\u000Atrue\\u000A:\\u000Atrue) === true');
+}
+
+//CHECK#7
+if ((eval("false\u000D?\u000Dtrue\u000D:\u000Dtrue")) !== true) {
+ $ERROR('#7: (false\\u000D?\\u000Dtrue\\u000D:\\u000Dtrue) === true');
+}
+
+//CHECK#8
+if ((eval("false\u2028?\u2028true\u2028:\u2028true")) !== true) {
+ $ERROR('#8: (false\\u2028?\\u2028true\\u2028:\\u2028true) === true');
+}
+
+//CHECK#9
+if ((eval("false\u2029?\u2029true\u2029:\u2029true")) !== true) {
+ $ERROR('#9: (false\\u2029?\\u2029true\\u2029:\\u2029true) === true');
+}
+
+//CHECK#10
+if ((eval("false\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029?\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029:\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true")) !== true) {
+ $ERROR('#10: (false\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029?\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029true\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029:\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T1.js
new file mode 100644
index 000000000..9dd3fb29b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T1.js
@@ -0,0 +1,48 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A2.1_T1;
+* @section: 11.12, 8.7.1;
+* @assertion: Operator x ? y : z uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if ((true ? false : true) !== false) {
+ $ERROR('#1: (true ? false : true) === false');
+}
+
+//CHECK#2
+if ((false ? false : true) !== true) {
+ $ERROR('#2: (false ? false : true) === true');
+}
+
+//CHECK#3
+var x = new Boolean(true);
+var y = new Boolean(false);
+if ((x ? y : true) !== y) {
+ $ERROR('#3: var x = new Boolean(true); var y = new Boolean(false); (x ? y : true) === y');
+}
+
+//CHECK#4
+var z = new Boolean(true);
+if ((false ? false : z) !== z) {
+ $ERROR('#4: var z = new Boolean(true); (false ? false : z) === z');
+}
+
+//CHECK#5
+var x = new Boolean(true);
+var y = new Boolean(false);
+var z = new Boolean(true);
+if ((x ? y : z) !== y) {
+ $ERROR('#5: var x = new Boolean(true); var y = new Boolean(false); var z = new Boolean(true); (x ? y : z) === y');
+}
+
+//CHECK#6
+var x = false;
+var y = new Boolean(false);
+var z = new Boolean(true);
+if ((x ? y : z) !== z) {
+ $ERROR('#6: var x = false; var y = new Boolean(false); var z = new Boolean(true); (x ? y : z) === z');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T2.js
new file mode 100644
index 000000000..c800904f8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A2.1_T2;
+* @section: 11.12, 8.7.1;
+* @assertion: Operator x ? y : z uses GetValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x ? true : false;
+ $ERROR('#1.1: x ? true : false throw ReferenceError. Actual: ' + (x ? true : false));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x ? true : false throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T3.js
new file mode 100644
index 000000000..16d2e310b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A2.1_T3;
+* @section: 11.12, 8.7.1;
+* @assertion: Operator x ? y : z uses GetValue;
+* @description: If ToBoolean(x) is true and GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ true ? y : false;
+ $ERROR('#1.1: true ? y : false throw ReferenceError. Actual: ' + (true ? y : false));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: true ? y : false throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T4.js
new file mode 100644
index 000000000..44b969330
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A2.1_T4;
+* @section: 11.12, 8.7.1;
+* @assertion: Operator x ? y : z uses GetValue;
+* @description: If ToBoolean(x) is false and GetBase(z) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ false ? true : z;
+ $ERROR('#1.1: false ? true : z throw ReferenceError. Actual: ' + (false ? true : z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: false ? true : z throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T5.js
new file mode 100644
index 000000000..17263398d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T5.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A2.1_T5;
+* @section: 11.12, 8.7.1, 16;
+* @assertion: Operator x ? y : z uses GetValue;
+* @description: If ToBoolean(x) is true and GetBase(z) is null, return y;
+*/
+
+//CHECK#1
+var y = new Object();
+if ((true ? y : z) !== y) {
+ $ERROR('#1: var y = new Object(); (true ? y : z) === y');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T6.js
new file mode 100644
index 000000000..d4c4ff2b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A2.1_T6.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A2.1_T6;
+* @section: 11.12, 8.7.1, 16;
+* @assertion: Operator x ? y : z uses GetValue;
+* @description: If ToBoolean(x) is false and GetBase(y) is null, return z;
+*/
+
+//CHECK#1
+var z = new Object();
+if ((false ? y : z) !== z) {
+ $ERROR('#1: var z = new Object(); (false ? y : z) === z');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T1.js
new file mode 100644
index 000000000..b3b02fa68
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A3_T1;
+* @section: 11.12;
+* @assertion: If ToBoolean(x) is false, return z;
+* @description: Type(y) and Type(z) are boolean primitives;
+*/
+
+//CHECK#1
+if ((false ? false : true) !== true) {
+ $ERROR('#1: (false ? false : true) === true');
+}
+
+//CHECK#2
+var z = new Boolean(true);
+if ((false ? true : z) !== z) {
+ $ERROR('#2: (var y = new Boolean(true); (false ? true : z) === z');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T2.js
new file mode 100644
index 000000000..3bfc4b563
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.12_A3_T2;
+ * @section: 11.12;
+ * @assertion: If ToBoolean(x) is false, return z;
+ * @description: Type(y) and Type(z) are number primitives;
+ */
+
+//CHECK#1
+if ((0 ? 0 : 1) !== 1) {
+ $ERROR('#1: (0 ? 0 : 1) === 1');
+}
+
+//CHECK#2
+var z = new Number(1);
+if ((0 ? 1 : z) !== z) {
+ $ERROR('#2: (var y = new Number(1); (0 ? 1 : z) === z');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T3.js
new file mode 100644
index 000000000..45b2c5d0d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A3_T3;
+* @section: 11.12;
+* @assertion: If ToBoolean(x) is false, return z;
+* @description: Type(y) and Type(z) are string primitives;
+*/
+
+//CHECK#1
+if (("" ? "" : "1") !== "1") {
+ $ERROR('#1: ("" ? "" : "1") === "1"');
+}
+
+//CHECK#2
+var z = new String("1");
+if (("" ? "1" : z) !== z) {
+ $ERROR('#2: (var y = new String("1"); ("" ? "1" : z) === z');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T4.js
new file mode 100644
index 000000000..747795e0d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A3_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A3_T4;
+* @section: 11.12;
+* @assertion: If ToBoolean(x) is false, return z;
+* @description: Type(x) or Type(y) is changed between null and undefined;
+*/
+
+//CHECK#1
+if ((false ? true : undefined) !== undefined) {
+ $ERROR('#1: (false ? true : undefined) === undefined');
+}
+
+//CHECK#2
+if ((false ? true : null) !== null) {
+ $ERROR('#2: (false ? true : null) === null');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T1.js
new file mode 100644
index 000000000..7c53a3ef6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A4_T1;
+* @section: 11.12;
+* @assertion: If ToBoolean(x) is true, return y;
+* @description: Type(y) and Type(z) are boolean primitives;
+*/
+
+//CHECK#1
+if ((true ? false : true) !== false) {
+ $ERROR('#1: (true ? false : true) === false');
+}
+
+//CHECK#2
+var y = new Boolean(true);
+if ((true ? y : false) !== y) {
+ $ERROR('#2: (var y = new Boolean(true); (true ? y : false) === y');
+}
+
+//CHECK#3
+var y = new Boolean(false);
+if ((y ? y : true) !== y) {
+ $ERROR('#3: (var y = new Boolean(false); (y ? y : true) === y');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T2.js
new file mode 100644
index 000000000..6c4624cfb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A4_T2;
+* @section: 11.12;
+* @assertion: If ToBoolean(x) is true, return y;
+* @description: Type(y) and Type(z) are number primitives;
+*/
+
+//CHECK#1
+if ((1 ? 0 : 1) !== 0) {
+ $ERROR('#1: (1 ? 0 : 1) === 0');
+}
+
+//CHECK#2
+var y = new Number(1);
+if ((1 ? y : 0) !== y) {
+ $ERROR('#2: (var y = new Number(1); (1 ? y : 0) === y');
+}
+
+//CHECK#3
+var y = new Number(NaN);
+if ((y ? y : 1) !== y) {
+ $ERROR('#3: (var y = new Number(NaN); (y ? y : 1) === y');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T3.js
new file mode 100644
index 000000000..450afd290
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A4_T3;
+* @section: 11.12;
+* @assertion: If ToBoolean(x) is true, return y;
+* @description: Type(y) and Type(z) are string primitives;
+*/
+
+//CHECK#1
+if (("1" ? "" : "1") !== "") {
+ $ERROR('#1: ("1" ? "" : "1") === ""');
+}
+
+//CHECK#2
+var y = new String("1");
+if (("1" ? y : "") !== y) {
+ $ERROR('#2: (var y = new String("1"); ("1" ? y : "") === y');
+}
+
+//CHECK#3
+var y = new String("y");
+if ((y ? y : "1") !== y) {
+ $ERROR('#3: (var y = new String("y"); (y ? y : "1") === y');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T4.js
new file mode 100644
index 000000000..011126a5d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.12_Conditional_Operator/S11.12_A4_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.12_A4_T4;
+* @section: 11.12;
+* @assertion: If ToBoolean(x) is true, return y;
+* @description: Type(x) or Type(y) is changed between null and undefined;
+*/
+
+//CHECK#1
+if ((true ? undefined : true) !== undefined) {
+ $ERROR('#1: (true ? undefined : true) === undefined');
+}
+
+//CHECK#2
+if ((true ? null : true) !== null) {
+ $ERROR('#2: (true ? null : true) === null');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A1.js
new file mode 100644
index 000000000..f0d31d204
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A1.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.1_A1;
+* @section: 11.13.1;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "=" or between "=" and AssignmentExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if ((eval("x\u0009=\u0009true")) !== true) {
+ $ERROR('#1: (x\\u0009=\\u0009true) === true');
+}
+
+//CHECK#2
+if ((eval("x\u000B=\u000Btrue")) !== true) {
+ $ERROR('#2: (x\\u000B=\\u000Btrue) === true');
+}
+
+//CHECK#3
+if ((eval("x\u000C=\u000Ctrue")) !== true) {
+ $ERROR('#3: (x\\u000C=\\u000Ctrue) === true');
+}
+
+//CHECK#4
+if ((eval("x\u0020=\u0020true")) !== true) {
+ $ERROR('#4: (x\\u0020=\\u0020true) === true');
+}
+
+//CHECK#5
+if ((eval("x\u00A0=\u00A0true")) !== true) {
+ $ERROR('#5: (x\\u00A0=\\u00A0true) === true');
+}
+
+//CHECK#6
+if ((eval("x\u000A=\u000Atrue")) !== true) {
+ $ERROR('#6: (x\\u000A=\\u000Atrue) === true');
+}
+
+//CHECK#7
+if ((eval("x\u000D=\u000Dtrue")) !== true) {
+ $ERROR('#7: (x\\u000D=\\u000Dtrue) === true');
+}
+
+//CHECK#8
+if ((eval("x\u2028=\u2028true")) !== true) {
+ $ERROR('#8: (x\\u2028=\\u2028true) === true');
+}
+
+//CHECK#9
+if ((eval("x\u2029=\u2029true")) !== true) {
+ $ERROR('#9: (x\\u2029=\\u2029true) === true');
+}
+
+
+//CHECK#10
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true")) !== true) {
+ $ERROR('#10: (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T1.js
new file mode 100644
index 000000000..ae8e978e4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.1_A2.1_T1;
+ * @section: 11.13.1;
+ * @assertion: Operator x = y uses GetValue and PutValue;
+ * @description: Either AssigmentExpression is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+x = 1;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = 1;
+if (x !== 1) {
+ $ERROR('#2: var x = 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+y = 1;
+x = y;
+if (x !== 1) {
+ $ERROR('#3: y = 1; x = y; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+var y = 1;
+var x = y;
+if (x !== 1) {
+ $ERROR('#4: var y = 1; var x = y; x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objecty.prop = 1.1;
+objectx.prop = objecty.prop;
+if (objectx.prop !== objecty.prop) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objecty.prop = 1; objectx.prop = objecty.prop; objectx.prop === objecty.prop. Actual: ' + (objectx.prop));
+} else {
+ if (objectx === objecty) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objecty.prop = 1; objectx.prop = objecty.prop; objectx !== objecty');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T2.js
new file mode 100644
index 000000000..3c8b7df6e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.1_A2.1_T2;
+ * @section: 11.13.1;
+ * @assertion: Operator x = y uses GetValue and PutValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x = y;
+ $ERROR('#1.1: x = y throw ReferenceError. Actual: ' + (x = y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x = y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T3.js
new file mode 100644
index 000000000..e427435b5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A2.1_T3.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.1_A2.1_T3;
+ * @section: 11.13.1, 16;
+ * @assertion: Operator x = y uses GetValue and PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError);
+* @negative
+*/
+
+//CHECK#1
+try {
+ 1 = 1;
+ $ERROR('#1.1: 1 = 1 throw ReferenceError (or SyntaxError). Actual: ' + (1 = 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 = 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ 1 = 1;
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A3.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A3.1.js
new file mode 100644
index 000000000..1d7dd4a8f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A3.1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.1_A3.1;
+ * @section: 11.13.1;
+ * @assertion: Operator x = y PutValue(x, y);
+ * @description: Checking Expression and Variable statements;
+*/
+
+//CHECK#1
+var x = 1;
+if (x !== 1) {
+ $ERROR('#1: var x = 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+y = 1;
+if (y !== 1) {
+ $ERROR('#2: y = 1; y === 1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A3.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A3.2.js
new file mode 100644
index 000000000..e03b08b21
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A3.2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.1_A3.2;
+ * @section: 11.13.1;
+ * @assertion: Operator x = y returns GetValue(y);
+ * @description: Checking Expression and Variable statements;
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) !== 1) {
+ $ERROR('#1: var x = 0; (x = 1) === 1. Actual: ' + ((x = 1)));
+}
+
+//CHECK#2
+x = 0;
+if ((x = 1) !== 1) {
+ $ERROR('#2: x = 0; (x = 1) === 1. Actual: ' + ((x = 1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A4_T1.js
new file mode 100644
index 000000000..3497dce04
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A4_T1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.1_A4_T1;
+ * @section: 11.13.1;
+ * @assertion: AssignmentExpression : LeftHandSideExpression = AssignmentExpression;
+ * @description: Syntax check;
+*/
+
+//CHECK#1
+x = x = 1;
+if (x !== 1) {
+ $ERROR('#1: The expression x = x = 1 is the same x = (x = 1), not (x = x) = 1. Actual: ' + (x));
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A4_T2.js
new file mode 100644
index 000000000..6692f6335
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.1_Simple_Assignment/S11.13.1_A4_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.1_A4_T2;
+ * @section: 11.13.1;
+ * @assertion: AssignmentExpression : LeftHandSideExpression = AssignmentExpression;
+ * @description: Syntax check if "x = x" throws ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x = x;
+ $ERROR('#1.1: x = x throw ReferenceError. Actual: ' + (x = x));
+} catch(e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x = x throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T1.js
new file mode 100644
index 000000000..49c929987
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T1;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x *= y;
+*/
+
+//CHECK#1
+x = -1;
+if ((eval("x\u0009*=\u0009-1")) !== 1) {
+ $ERROR('#1: x = -1; (x\\u0009*=\\u0009-1) === 1');
+}
+
+//CHECK#2
+x = -1;
+if ((eval("x\u000B*=\u000B-1")) !== 1) {
+ $ERROR('#2: x = -1; (x\\u000B*=\\u000B-1) === 1');
+}
+
+//CHECK#3
+x = -1;
+if ((eval("x\u000C*=\u000C-1")) !== 1) {
+ $ERROR('#3: x = -1; (x\\u000C*=\\u000C-1) === 1');
+}
+
+//CHECK#4
+x = -1;
+if ((eval("x\u0020*=\u0020-1")) !== 1) {
+ $ERROR('#4: x = -1; (x\\u0020*=\\u0020-1) === 1');
+}
+
+//CHECK#5
+x = -1;
+if ((eval("x\u00A0*=\u00A0-1")) !== 1) {
+ $ERROR('#5: x = -1; (x\\u00A0*=\\u00A0-1) === 1');
+}
+
+//CHECK#6
+x = -1;
+if ((eval("x\u000A*=\u000A-1")) !== 1) {
+ $ERROR('#6: x = -1; (x\\u000A*=\\u000A-1) === 1');
+}
+
+//CHECK#7
+x = -1;
+if ((eval("x\u000D*=\u000D-1")) !== 1) {
+ $ERROR('#7: x = -1; (x\\u000D*=\\u000D-1) === 1');
+}
+
+//CHECK#8
+x = -1;
+if ((eval("x\u2028*=\u2028-1")) !== 1) {
+ $ERROR('#8: x = -1; (x\\u2028*=\\u2028-1) === 1');
+}
+
+//CHECK#9
+x = -1;
+if ((eval("x\u2029*=\u2029-1")) !== 1) {
+ $ERROR('#9: x = -1; (x\\u2029*=\\u2029-1) === 1');
+}
+
+
+//CHECK#10
+x = -1;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029*=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-1")) !== 1) {
+ $ERROR('#10: x = -1; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029*=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029-1) === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T10.js
new file mode 100644
index 000000000..cbbee8049
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T10.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T10;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x ^= y;
+*/
+
+//CHECK#1
+x = 1;
+if ((eval("x\u0009^=\u00091")) !== 0) {
+ $ERROR('#1: x = 1; (x\\u0009^=\\u00091) === 0');
+}
+
+//CHECK#2
+x = 1;
+if ((eval("x\u000B^=\u000B1")) !== 0) {
+ $ERROR('#2: x = 1; (x\\u000B^=\\u000B1) === 0');
+}
+
+//CHECK#3
+x = 1;
+if ((eval("x\u000C^=\u000C1")) !== 0) {
+ $ERROR('#3: x = 1; (x\\u000C^=\\u000C1) === 0');
+}
+
+//CHECK#4
+x = 1;
+if ((eval("x\u0020^=\u00201")) !== 0) {
+ $ERROR('#4: x = 1; (x\\u0020^=\\u00201) === 0');
+}
+
+//CHECK#5
+x = 1;
+if ((eval("x\u00A0^=\u00A01")) !== 0) {
+ $ERROR('#5: x = 1; (x\\u00A0^=\\u00A01) === 0');
+}
+
+//CHECK#6
+x = 1;
+if ((eval("x\u000A^=\u000A1")) !== 0) {
+ $ERROR('#6: x = 1; (x\\u000A^=\\u000A1) === 0');
+}
+
+//CHECK#7
+x = 1;
+if ((eval("x\u000D^=\u000D1")) !== 0) {
+ $ERROR('#7: x = 1; (x\\u000D^=\\u000D1) === 0');
+}
+
+//CHECK#8
+x = 1;
+if ((eval("x\u2028^=\u20281")) !== 0) {
+ $ERROR('#8: x = 1; (x\\u2028^=\\u20281) === 0');
+}
+
+//CHECK#9
+x = 1;
+if ((eval("x\u2029^=\u20291")) !== 0) {
+ $ERROR('#9: x = 1; (x\\u2029^=\\u20291) === 0');
+}
+
+
+//CHECK#10
+x = 1;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029^=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 0) {
+ $ERROR('#10: x = 1; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029^=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T11.js
new file mode 100644
index 000000000..a3639e7aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T11.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T11;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x |= y;
+*/
+
+//CHECK#1
+x = 0;
+if ((eval("x\u0009|=\u00091")) !== 1) {
+ $ERROR('#1: x = 0; (x\\u0009|=\\u00091) === 1');
+}
+
+//CHECK#2
+x = 0;
+if ((eval("x\u000B|=\u000B1")) !== 1) {
+ $ERROR('#2: x = 0; (x\\u000B|=\\u000B1) === 1');
+}
+
+//CHECK#3
+x = 0;
+if ((eval("x\u000C|=\u000C1")) !== 1) {
+ $ERROR('#3: x = 0; (x\\u000C|=\\u000C1) === 1');
+}
+
+//CHECK#4
+x = 0;
+if ((eval("x\u0020|=\u00201")) !== 1) {
+ $ERROR('#4: x = 0; (x\\u0020|=\\u00201) === 1');
+}
+
+//CHECK#5
+x = 0;
+if ((eval("x\u00A0|=\u00A01")) !== 1) {
+ $ERROR('#5: x = 0; (x\\u00A0|=\\u00A01) === 1');
+}
+
+//CHECK#6
+x = 0;
+if ((eval("x\u000A|=\u000A1")) !== 1) {
+ $ERROR('#6: x = 0; (x\\u000A|=\\u000A1) === 1');
+}
+
+//CHECK#7
+x = 0;
+if ((eval("x\u000D|=\u000D1")) !== 1) {
+ $ERROR('#7: x = 0; (x\\u000D|=\\u000D1) === 1');
+}
+
+//CHECK#8
+x = 0;
+if ((eval("x\u2028|=\u20281")) !== 1) {
+ $ERROR('#8: x = 0; (x\\u2028|=\\u20281) === 1');
+}
+
+//CHECK#9
+x = 0;
+if ((eval("x\u2029|=\u20291")) !== 1) {
+ $ERROR('#9: x = 0; (x\\u2029|=\\u20291) === 1');
+}
+
+
+//CHECK#10
+x = 0;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029|=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 1) {
+ $ERROR('#10: x = 0; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029|=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T2.js
new file mode 100644
index 000000000..75fde9ee4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T2.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T2;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x /= y;
+*/
+
+//CHECK#1
+x = -1;
+if ((eval("x\u0009/=\u0009-1")) !== 1) {
+ $ERROR('#1: x = -1; (x\\u0009/=\\u0009-1) === 1');
+}
+
+//CHECK#2
+x = -1;
+if ((eval("x\u000B/=\u000B-1")) !== 1) {
+ $ERROR('#2: x = -1; (x\\u000B/=\\u000B-1) === 1');
+}
+
+//CHECK#3
+x = -1;
+if ((eval("x\u000C/=\u000C-1")) !== 1) {
+ $ERROR('#3: x = -1; (x\\u000C/=\\u000C-1) === 1');
+}
+
+//CHECK#4
+x = -1;
+if ((eval("x\u0020/=\u0020-1")) !== 1) {
+ $ERROR('#4: x = -1; (x\\u0020/=\\u0020-1) === 1');
+}
+
+//CHECK#5
+x = -1;
+if ((eval("x\u00A0/=\u00A0-1")) !== 1) {
+ $ERROR('#5: x = -1; (x\\u00A0/=\\u00A0-1) === 1');
+}
+
+//CHECK#6
+x = -1;
+if ((eval("x\u000A/=\u000A-1")) !== 1) {
+ $ERROR('#6: x = -1; (x\\u000A/=\\u000A-1) === 1');
+}
+
+//CHECK#7
+x = -1;
+if ((eval("x\u000D/=\u000D-1")) !== 1) {
+ $ERROR('#7: x = -1; (x\\u000D/=\\u000D-1) === 1');
+}
+
+//CHECK#8
+x = -1;
+if ((eval("x\u2028/=\u2028-1")) !== 1) {
+ $ERROR('#8: x = -1; (x\\u2028/=\\u2028-1) === 1');
+}
+
+//CHECK#9
+x = -1;
+if ((eval("x\u2029/=\u2029-1")) !== 1) {
+ $ERROR('#9: x = -1; (x\\u2029/=\\u2029-1) === 1');
+}
+
+
+//CHECK#10
+x = -1;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029/=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-1")) !== 1) {
+ $ERROR('#10: x = -1; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029/=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029-1) === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T3.js
new file mode 100644
index 000000000..6b8381441
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T3.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T3;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x %= y;
+*/
+
+//CHECK#1
+x = -1;
+if ((eval("x\u0009%=\u0009-1")) !== 0) {
+ $ERROR('#1: x = -1; (x\\u0009%=\\u0009-1) === 0');
+}
+
+//CHECK#2
+x = -1;
+if ((eval("x\u000B%=\u000B-1")) !== 0) {
+ $ERROR('#2: x = -1; (x\\u000B%=\\u000B-1) === 0');
+}
+
+//CHECK#3
+x = -1;
+if ((eval("x\u000C%=\u000C-1")) !== 0) {
+ $ERROR('#3: x = -1; (x\\u000C%=\\u000C-1) === 0');
+}
+
+//CHECK#4
+x = -1;
+if ((eval("x\u0020%=\u0020-1")) !== 0) {
+ $ERROR('#4: x = -1; (x\\u0020%=\\u0020-1) === 0');
+}
+
+//CHECK#5
+x = -1;
+if ((eval("x\u00A0%=\u00A0-1")) !== 0) {
+ $ERROR('#5: x = -1; (x\\u00A0%=\\u00A0-1) === 0');
+}
+
+//CHECK#6
+x = -1;
+if ((eval("x\u000A%=\u000A-1")) !== 0) {
+ $ERROR('#6: x = -1; (x\\u000A%=\\u000A-1) === 0');
+}
+
+//CHECK#7
+x = -1;
+if ((eval("x\u000D%=\u000D-1")) !== 0) {
+ $ERROR('#7: x = -1; (x\\u000D%=\\u000D-1) === 0');
+}
+
+//CHECK#8
+x = -1;
+if ((eval("x\u2028%=\u2028-1")) !== 0) {
+ $ERROR('#8: x = -1; (x\\u2028%=\\u2028-1) === 0');
+}
+
+//CHECK#9
+x = -1;
+if ((eval("x\u2029%=\u2029-1")) !== 0) {
+ $ERROR('#9: x = -1; (x\\u2029%=\\u2029-1) === 0');
+}
+
+
+//CHECK#10
+x = -1;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029%=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-1")) !== 0) {
+ $ERROR('#10: x = -1; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029%=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029-1) === 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T4.js
new file mode 100644
index 000000000..8c31a7624
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T4.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T4;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x += y;
+*/
+
+//CHECK#1
+x = -1;
+if ((eval("x\u0009+=\u0009-1")) !== -2) {
+ $ERROR('#1: x = -1; (x\\u0009+=\\u0009-1) === -2');
+}
+
+//CHECK#2
+x = -1;
+if ((eval("x\u000B+=\u000B-1")) !== -2) {
+ $ERROR('#2: x = -1; (x\\u000B+=\\u000B-1) === -2');
+}
+
+//CHECK#3
+x = -1;
+if ((eval("x\u000C+=\u000C-1")) !== -2) {
+ $ERROR('#3: x = -1; (x\\u000C+=\\u000C-1) === -2');
+}
+
+//CHECK#4
+x = -1;
+if ((eval("x\u0020+=\u0020-1")) !== -2) {
+ $ERROR('#4: x = -1; (x\\u0020+=\\u0020-1) === -2');
+}
+
+//CHECK#5
+x = -1;
+if ((eval("x\u00A0+=\u00A0-1")) !== -2) {
+ $ERROR('#5: x = -1; (x\\u00A0+=\\u00A0-1) === -2');
+}
+
+//CHECK#6
+x = -1;
+if ((eval("x\u000A+=\u000A-1")) !== -2) {
+ $ERROR('#6: x = -1; (x\\u000A+=\\u000A-1) === -2');
+}
+
+//CHECK#7
+x = -1;
+if ((eval("x\u000D+=\u000D-1")) !== -2) {
+ $ERROR('#7: x = -1; (x\\u000D+=\\u000D-1) === -2');
+}
+
+//CHECK#8
+x = -1;
+if ((eval("x\u2028+=\u2028-1")) !== -2) {
+ $ERROR('#8: x = -1; (x\\u2028+=\\u2028-1) === -2');
+}
+
+//CHECK#9
+x = -1;
+if ((eval("x\u2029+=\u2029-1")) !== -2) {
+ $ERROR('#9: x = -1; (x\\u2029+=\\u2029-1) === -2');
+}
+
+
+//CHECK#10
+x = -1;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029+=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-1")) !== -2) {
+ $ERROR('#10: x = -1; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029+=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029-1) === -2');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T5.js
new file mode 100644
index 000000000..29acfef08
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T5.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T5;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x -= y;
+*/
+
+//CHECK#1
+x = -1;
+if ((eval("x\u0009-=\u00091")) !== -2) {
+ $ERROR('#1: x = -1; (x\\u0009-=\\u00091) === -2');
+}
+
+//CHECK#2
+x = -1;
+if ((eval("x\u000B-=\u000B1")) !== -2) {
+ $ERROR('#2: x = -1; (x\\u000B-=\\u000B1) === -2');
+}
+
+//CHECK#3
+x = -1;
+if ((eval("x\u000C-=\u000C1")) !== -2) {
+ $ERROR('#3: x = -1; (x\\u000C-=\\u000C1) === -2');
+}
+
+//CHECK#4
+x = -1;
+if ((eval("x\u0020-=\u00201")) !== -2) {
+ $ERROR('#4: x = -1; (x\\u0020-=\\u00201) === -2');
+}
+
+//CHECK#5
+x = -1;
+if ((eval("x\u00A0-=\u00A01")) !== -2) {
+ $ERROR('#5: x = -1; (x\\u00A0-=\\u00A01) === -2');
+}
+
+//CHECK#6
+x = -1;
+if ((eval("x\u000A-=\u000A1")) !== -2) {
+ $ERROR('#6: x = -1; (x\\u000A-=\\u000A1) === -2');
+}
+
+//CHECK#7
+x = -1;
+if ((eval("x\u000D-=\u000D1")) !== -2) {
+ $ERROR('#7: x = -1; (x\\u000D-=\\u000D1) === -2');
+}
+
+//CHECK#8
+x = -1;
+if ((eval("x\u2028-=\u20281")) !== -2) {
+ $ERROR('#8: x = -1; (x\\u2028-=\\u20281) === -2');
+}
+
+//CHECK#9
+x = -1;
+if ((eval("x\u2029-=\u20291")) !== -2) {
+ $ERROR('#9: x = -1; (x\\u2029-=\\u20291) === -2');
+}
+
+
+//CHECK#10
+x = -1;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== -2) {
+ $ERROR('#10: x = -1; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029-=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === -2');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T6.js
new file mode 100644
index 000000000..64d79188b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T6.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T6;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x <<= y;
+*/
+
+//CHECK#1
+x = 1;
+if ((eval("x\u0009<<=\u00091")) !== 2) {
+ $ERROR('#1: x = 1; (x\\u0009<<=\\u00091) === 2');
+}
+
+//CHECK#2
+x = 1;
+if ((eval("x\u000B<<=\u000B1")) !== 2) {
+ $ERROR('#2: x = 1; (x\\u000B<<=\\u000B1) === 2');
+}
+
+//CHECK#3
+x = 1;
+if ((eval("x\u000C<<=\u000C1")) !== 2) {
+ $ERROR('#3: x = 1; (x\\u000C<<=\\u000C1) === 2');
+}
+
+//CHECK#4
+x = 1;
+if ((eval("x\u0020<<=\u00201")) !== 2) {
+ $ERROR('#4: x = 1; (x\\u0020<<=\\u00201) === 2');
+}
+
+//CHECK#5
+x = 1;
+if ((eval("x\u00A0<<=\u00A01")) !== 2) {
+ $ERROR('#5: x = 1; (x\\u00A0<<=\\u00A01) === 2');
+}
+
+//CHECK#6
+x = 1;
+if ((eval("x\u000A<<=\u000A1")) !== 2) {
+ $ERROR('#6: x = 1; (x\\u000A<<=\\u000A1) === 2');
+}
+
+//CHECK#7
+x = 1;
+if ((eval("x\u000D<<=\u000D1")) !== 2) {
+ $ERROR('#7: x = 1; (x\\u000D<<=\\u000D1) === 2');
+}
+
+//CHECK#8
+x = 1;
+if ((eval("x\u2028<<=\u20281")) !== 2) {
+ $ERROR('#8: x = 1; (x\\u2028<<=\\u20281) === 2');
+}
+
+//CHECK#9
+x = 1;
+if ((eval("x\u2029<<=\u20291")) !== 2) {
+ $ERROR('#9: x = 1; (x\\u2029<<=\\u20291) === 2');
+}
+
+
+//CHECK#10
+x = 1;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029<<=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 2) {
+ $ERROR('#10: x = 1; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029<<=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 2');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T7.js
new file mode 100644
index 000000000..9e66bc81f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T7.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T7;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x >>= y;
+*/
+
+//CHECK#1
+x = 1;
+if ((eval("x\u0009>>=\u00091")) !== 0) {
+ $ERROR('#1: x = 1; (x\\u0009>>=\\u00091) === 0');
+}
+
+//CHECK#2
+x = 1;
+if ((eval("x\u000B>>=\u000B1")) !== 0) {
+ $ERROR('#2: x = 1; (x\\u000B>>=\\u000B1) === 0');
+}
+
+//CHECK#3
+x = 1;
+if ((eval("x\u000C>>=\u000C1")) !== 0) {
+ $ERROR('#3: x = 1; (x\\u000C>>=\\u000C1) === 0');
+}
+
+//CHECK#4
+x = 1;
+if ((eval("x\u0020>>=\u00201")) !== 0) {
+ $ERROR('#4: x = 1; (x\\u0020>>=\\u00201) === 0');
+}
+
+//CHECK#5
+x = 1;
+if ((eval("x\u00A0>>=\u00A01")) !== 0) {
+ $ERROR('#5: x = 1; (x\\u00A0>>=\\u00A01) === 0');
+}
+
+//CHECK#6
+x = 1;
+if ((eval("x\u000A>>=\u000A1")) !== 0) {
+ $ERROR('#6: x = 1; (x\\u000A>>=\\u000A1) === 0');
+}
+
+//CHECK#7
+x = 1;
+if ((eval("x\u000D>>=\u000D1")) !== 0) {
+ $ERROR('#7: x = 1; (x\\u000D>>=\\u000D1) === 0');
+}
+
+//CHECK#8
+x = 1;
+if ((eval("x\u2028>>=\u20281")) !== 0) {
+ $ERROR('#8: x = 1; (x\\u2028>>=\\u20281) === 0');
+}
+
+//CHECK#9
+x = 1;
+if ((eval("x\u2029>>=\u20291")) !== 0) {
+ $ERROR('#9: x = 1; (x\\u2029>>=\\u20291) === 0');
+}
+
+
+//CHECK#10
+x = 1;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029>>=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 0) {
+ $ERROR('#10: x = 1; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029>>=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T8.js
new file mode 100644
index 000000000..4835d3d01
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T8.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T8;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x >>>= y;
+*/
+
+//CHECK#1
+x = 1;
+if ((eval("x\u0009>>>=\u00091")) !== 0) {
+ $ERROR('#1: x = 1; (x\\u0009>>>=\\u00091) === 0');
+}
+
+//CHECK#2
+x = 1;
+if ((eval("x\u000B>>>=\u000B1")) !== 0) {
+ $ERROR('#2: x = 1; (x\\u000B>>>=\\u000B1) === 0');
+}
+
+//CHECK#3
+x = 1;
+if ((eval("x\u000C>>>=\u000C1")) !== 0) {
+ $ERROR('#3: x = 1; (x\\u000C>>>=\\u000C1) === 0');
+}
+
+//CHECK#4
+x = 1;
+if ((eval("x\u0020>>>=\u00201")) !== 0) {
+ $ERROR('#4: x = 1; (x\\u0020>>>=\\u00201) === 0');
+}
+
+//CHECK#5
+x = 1;
+if ((eval("x\u00A0>>>=\u00A01")) !== 0) {
+ $ERROR('#5: x = 1; (x\\u00A0>>>=\\u00A01) === 0');
+}
+
+//CHECK#6
+x = 1;
+if ((eval("x\u000A>>>=\u000A1")) !== 0) {
+ $ERROR('#6: x = 1; (x\\u000A>>>=\\u000A1) === 0');
+}
+
+//CHECK#7
+x = 1;
+if ((eval("x\u000D>>>=\u000D1")) !== 0) {
+ $ERROR('#7: x = 1; (x\\u000D>>>=\\u000D1) === 0');
+}
+
+//CHECK#8
+x = 1;
+if ((eval("x\u2028>>>=\u20281")) !== 0) {
+ $ERROR('#8: x = 1; (x\\u2028>>>=\\u20281) === 0');
+}
+
+//CHECK#9
+x = 1;
+if ((eval("x\u2029>>>=\u20291")) !== 0) {
+ $ERROR('#9: x = 1; (x\\u2029>>>=\\u20291) === 0');
+}
+
+
+//CHECK#10
+x = 1;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029>>>=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 0) {
+ $ERROR('#10: x = 1; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029>>>=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T9.js
new file mode 100644
index 000000000..ee3413223
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A1_T9.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.13.2_A1_T9;
+* @section: 11.13.2;
+* @assertion: White Space and Line Terminator between LeftHandSideExpression and "@=" or between "@=" and AssignmentExpression are allowed;
+* @description: Checking by using eval, check operator is x &= y;
+*/
+
+//CHECK#1
+x = 1;
+if ((eval("x\u0009&=\u00091")) !== 1) {
+ $ERROR('#1: x = 1; (x\\u0009&=\\u00091) === 1');
+}
+
+//CHECK#2
+x = 1;
+if ((eval("x\u000B&=\u000B1")) !== 1) {
+ $ERROR('#2: x = 1; (x\\u000B&=\\u000B1) === 1');
+}
+
+//CHECK#3
+x = 1;
+if ((eval("x\u000C&=\u000C1")) !== 1) {
+ $ERROR('#3: x = 1; (x\\u000C&=\\u000C1) === 1');
+}
+
+//CHECK#4
+x = 1;
+if ((eval("x\u0020&=\u00201")) !== 1) {
+ $ERROR('#4: x = 1; (x\\u0020&=\\u00201) === 1');
+}
+
+//CHECK#5
+x = 1;
+if ((eval("x\u00A0&=\u00A01")) !== 1) {
+ $ERROR('#5: x = 1; (x\\u00A0&=\\u00A01) === 1');
+}
+
+//CHECK#6
+x = 1;
+if ((eval("x\u000A&=\u000A1")) !== 1) {
+ $ERROR('#6: x = 1; (x\\u000A&=\\u000A1) === 1');
+}
+
+//CHECK#7
+x = 1;
+if ((eval("x\u000D&=\u000D1")) !== 1) {
+ $ERROR('#7: x = 1; (x\\u000D&=\\u000D1) === 1');
+}
+
+//CHECK#8
+x = 1;
+if ((eval("x\u2028&=\u20281")) !== 1) {
+ $ERROR('#8: x = 1; (x\\u2028&=\\u20281) === 1');
+}
+
+//CHECK#9
+x = 1;
+if ((eval("x\u2029&=\u20291")) !== 1) {
+ $ERROR('#9: x = 1; (x\\u2029&=\\u20291) === 1');
+}
+
+
+//CHECK#10
+x = 1;
+if ((eval("x\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029&=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) !== 1) {
+ $ERROR('#10: x = 1; (x\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029&=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.1.js
new file mode 100644
index 000000000..c06a6950d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.1;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x *= y";
+*/
+
+//CHECK#1
+var x = 1;
+var z = (x *= -1);
+if (z !== -1) {
+ $ERROR('#1: var x = 1; var z = (x *= -1); z === -1. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = 1;
+var y = -1;
+var z = (x *= y);
+if (z !== -1) {
+ $ERROR('#2: var x = 1; var y = -1; var z = (x *= y); z === -1. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.10.js
new file mode 100644
index 000000000..eb5c46ff3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.10.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.10;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x ^= y";
+*/
+
+//CHECK#1
+var x = 1;
+var z = (x ^= 1);
+if (z !== 0) {
+ $ERROR('#1: var x = 1; var z = (x ^= 1); z === 0. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = 1;
+var y = 1;
+var z = (x ^= y);
+if (z !== 0) {
+ $ERROR('#2: var x = 1; var y = 1; var z = (x ^= y); z === 0. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.11.js
new file mode 100644
index 000000000..55af9fc77
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.11.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.11;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x |= y";
+*/
+
+//CHECK#1
+var x = 0;
+var z = (x |= 1);
+if (z !== 1) {
+ $ERROR('#1: var x = 0; var z = (x |= 1); z === 1. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = 0;
+var y = 1;
+var z = (x |= y);
+if (z !== 1) {
+ $ERROR('#2: var x = 0; var y = 1; var z = (x |= y); z === 1. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.2.js
new file mode 100644
index 000000000..3483945e5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.2;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x /= y";
+*/
+
+//CHECK#1
+var x = 1;
+var z = (x /= -1);
+if (z !== -1) {
+ $ERROR('#1: var x = 1; var z = (x /= -1); z === -1. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = 1;
+var y = -1;
+var z = (x /= y);
+if (z !== -1) {
+ $ERROR('#2: var x = 1; var y = -1; var z = (x /= y); z === -1. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.3.js
new file mode 100644
index 000000000..fd148ed24
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.3.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.3;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x %= y";
+*/
+
+//CHECK#1
+var x = -1;
+var z = (x %= 2);
+if (z !== -1) {
+ $ERROR('#1: var x = -1; var z = (x %= 2); z === -1. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = -1;
+var y = 2;
+var z = (x %= y);
+if (z !== -1) {
+ $ERROR('#2: var x = -1; var y = 2; var z = (x %= y); z === -1. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.4.js
new file mode 100644
index 000000000..776dbfdd5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.4.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.4;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x += y";
+*/
+
+//CHECK#1
+var x = 1;
+var z = (x += 1);
+if (z !== 2) {
+ $ERROR('#1: var x = 1; var z = (x += 1); z === 2. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = 1;
+var y = 1;
+var z = (x += y);
+if (z !== 2) {
+ $ERROR('#2: var x = 1; var y = 1; var z = (x += y); z === 2. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.5.js
new file mode 100644
index 000000000..371f2462d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.5.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.5;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x -= y";
+*/
+
+//CHECK#1
+var x = 1;
+var z = (x -= 1);
+if (z !== 0) {
+ $ERROR('#1: var x = 1; var z = (x -= 1); z === 0. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = 1;
+var y = 1;
+var z = (x -= y);
+if (z !== 0) {
+ $ERROR('#2: var x = 1; var y = 1; var z = (x -= y); z === 0. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.6.js
new file mode 100644
index 000000000..6ce2671d8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.6.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.6;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x <<= y";
+*/
+
+//CHECK#1
+var x = 1;
+var z = (x <<= 1);
+if (z !== 2) {
+ $ERROR('#1: var x = 1; var z = (x <<= 1); z === 2. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = 1;
+var y = 1;
+var z = (x <<= y);
+if (z !== 2) {
+ $ERROR('#2: var x = 1; var y = 1; var z = (x <<= y); z === 2. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.7.js
new file mode 100644
index 000000000..24832642c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.7.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.7;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x >>= y";
+*/
+
+//CHECK#1
+var x = 4;
+var z = (x >>= 1);
+if (z !== 2) {
+ $ERROR('#1: var x = 4; var z = (x >>= 1); z === 2. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = 4;
+var y = 1;
+var z = (x >>= y);
+if (z !== 2) {
+ $ERROR('#2: var x = 4; var y = 1; var z = (x >>= y); z === 2. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.8.js
new file mode 100644
index 000000000..614b5c6c3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.8.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.8;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x >>>= y";
+*/
+
+//CHECK#1
+var x = 4;
+var z = (x >>>= 1);
+if (z !== 2) {
+ $ERROR('#1: var x = 4; var z = (x >>>= 1); z === 2. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = 4;
+var y = 1;
+var z = (x >>>= y);
+if (z !== 2) {
+ $ERROR('#2: var x = 4; var y = 1; var z = (x >>>= y); z === 2. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.9.js
new file mode 100644
index 000000000..eaec2b218
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T1.9.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T1.9;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null, check opeartor is "x &= y";
+*/
+
+//CHECK#1
+var x = 1;
+var z = (x &= 1);
+if (z !== 1) {
+ $ERROR('#1: var x = 1; var z = (x &= 1); z === 1. Actual: ' + (z));
+}
+
+//CHECK#2
+var x = 1;
+var y = 1;
+var z = (x &= y);
+if (z !== 1) {
+ $ERROR('#2: var x = 1; var y = 1; var z = (x &= y); z === 1. Actual: ' + (z));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.1.js
new file mode 100644
index 000000000..1c01d09b5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.1;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x *= y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x *= y);
+ $ERROR('#1.1: var x = 1; x *= y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x *= y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.10.js
new file mode 100644
index 000000000..c876cd464
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.10.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.10;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x ^= y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x ^= y);
+ $ERROR('#1.1: var x = 1; x ^= y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x ^= y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.11.js
new file mode 100644
index 000000000..82f7c979d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.11.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.11;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x |= y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x |= y);
+ $ERROR('#1.1: var x = 1; x |= y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x |= y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.2.js
new file mode 100644
index 000000000..80a072ded
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.2;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x /= y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x /= y);
+ $ERROR('#1.1: var x = 1; x /= y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x /= y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.3.js
new file mode 100644
index 000000000..27a5e4add
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.3;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x %= y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x %= y);
+ $ERROR('#1.1: var x = 1; x %= y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x %= y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.4.js
new file mode 100644
index 000000000..65b071b4d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.4.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.4;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x += y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x += y);
+ $ERROR('#1.1: var x = 1; x += y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x += y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.5.js
new file mode 100644
index 000000000..2369768c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.5;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x -= y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x -= y);
+ $ERROR('#1.1: var x = 1; x -= y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x -= y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.6.js
new file mode 100644
index 000000000..61fb6afdf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.6.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.6;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x <<= y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x <<= y);
+ $ERROR('#1.1: var x = 1; x <<= y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x <<= y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.7.js
new file mode 100644
index 000000000..11d468e2d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.7.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.7;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x >>= y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x >>= y);
+ $ERROR('#1.1: var x = 1; x >>= y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x >>= y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.8.js
new file mode 100644
index 000000000..5f644d515
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.8.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.8;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x >>>= y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x >>>= y);
+ $ERROR('#1.1: var x = 1; x >>>= y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x >>>= y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.9.js
new file mode 100644
index 000000000..5514ae2f2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T2.9.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T2.9;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(AssigmentExpression) is null, throw ReferenceError. Check operator is "x &= y";
+*/
+
+//CHECK#1
+try {
+ var x = 1;
+ var z = (x &= y);
+ $ERROR('#1.1: var x = 1; x &= y throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: var x = 1; x &= y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.1.js
new file mode 100644
index 000000000..9fff16897
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.1;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x *= y";
+*/
+
+//CHECK#1
+try {
+ var z = (x *= 1);
+ $ERROR('#1.1: x *= 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x *= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.10.js
new file mode 100644
index 000000000..3bd20a14b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.10.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.10;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x ^= y";
+*/
+
+//CHECK#1
+try {
+ var z = (x ^= 1);
+ $ERROR('#1.1: x ^= 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x ^= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.11.js
new file mode 100644
index 000000000..1eb4b3609
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.11.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.11;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x |= y";
+*/
+
+//CHECK#1
+try {
+ var z = (x |= 1);
+ $ERROR('#1.1: x |= 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x |= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.2.js
new file mode 100644
index 000000000..9670e3a11
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.2;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x /= y";
+*/
+
+//CHECK#1
+try {
+ var z = (x /= 1);
+ $ERROR('#1.1: x /= 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x /= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.3.js
new file mode 100644
index 000000000..37745fbc1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.3;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x %= y";
+*/
+
+//CHECK#1
+try {
+ var z = (x %= 1);
+ $ERROR('#1.1: x %= 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x %= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.4.js
new file mode 100644
index 000000000..c021b0942
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.4;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x += y";
+*/
+
+//CHECK#1
+try {
+ var z = (x += 1);
+ $ERROR('#1.1: x += 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x += 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.5.js
new file mode 100644
index 000000000..cc01c0716
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.5.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.5;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x -= y";
+*/
+
+//CHECK#1
+try {
+ var z = (x -= 1);
+ $ERROR('#1.1: x -= 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x -= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.6.js
new file mode 100644
index 000000000..fdd0c0dd9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.6.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.6;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x <<= y";
+*/
+
+//CHECK#1
+try {
+ var z = (x <<= 1);
+ $ERROR('#1.1: x <<= 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x <<= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.7.js
new file mode 100644
index 000000000..870e774a3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.7.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.7;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x >>= y";
+*/
+
+//CHECK#1
+try {
+ var z = (x >>= 1);
+ $ERROR('#1.1: x >>= 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x >>= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.8.js
new file mode 100644
index 000000000..162e7245a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.8.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.8;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x >>>= y";
+*/
+
+//CHECK#1
+try {
+ var z = (x >>>= 1);
+ $ERROR('#1.1: x >>>= 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x >>>= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.9.js
new file mode 100644
index 000000000..704c63250
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.1_T3.9.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.1_T3.9;
+ * @section: 11.13.2;
+ * @assertion: Operator uses GetValue;
+ * @description: If GetBase(LeftHandSideExpression) is null, throw ReferenceError. Check operator is "x &= y";
+*/
+
+//CHECK#1
+try {
+ var z = (x &= 1);
+ $ERROR('#1.1: x &= 1 throw ReferenceError. Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x &= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T1.js
new file mode 100644
index 000000000..12e694c59
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T1;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x *= y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 *= 1);
+ $ERROR('#1.1: 1 *= 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 *= 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 *= 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T10.js
new file mode 100644
index 000000000..a736ade20
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T10.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T10;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x ^= y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 ^= 1);
+ $ERROR('#1.1: 1 ^= 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 ^= 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 ^= 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T11.js
new file mode 100644
index 000000000..00d29a582
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T11.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T11;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x |= y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 |= 1);
+ $ERROR('#1.1: 1 |= 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 |= 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 |= 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T2.js
new file mode 100644
index 000000000..cd2ddd8bd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T2;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x /= y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 /= 1);
+ $ERROR('#1.1: 1 /= 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 /= 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 /= 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T3.js
new file mode 100644
index 000000000..a284ae157
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T3.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T3;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x %= y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 %= 1);
+ $ERROR('#1.1: 1 %= 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 %= 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 %= 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T4.js
new file mode 100644
index 000000000..08e4e14ad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T4;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x += y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 += 1);
+ $ERROR('#1.1: 1 += 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 += 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 += 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T5.js
new file mode 100644
index 000000000..4e10590ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T5.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T5;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x -= y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 -= 1);
+ $ERROR('#1.1: 1 -= 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 -= 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 -= 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T6.js
new file mode 100644
index 000000000..9fce0372e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T6.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T6;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x <<= y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 <<= 1);
+ $ERROR('#1.1: 1 <<= 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 <<= 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 <<= 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T7.js
new file mode 100644
index 000000000..9356b73d4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T7.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T7;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x >>= y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 >>= 1);
+ $ERROR('#1.1: 1 >>= 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 >>= 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 >>= 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T8.js
new file mode 100644
index 000000000..3c27b24f9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T8.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T8;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x >>>= y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 >>>= 1);
+ $ERROR('#1.1: 1 >>>= 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 >>>= 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 >>>= 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T9.js
new file mode 100644
index 000000000..0ac35ffea
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A2.2_T9.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A2.2_T9;
+ * @section: 11.13.2, 16;
+ * @assertion: Operator uses PutValue;
+ * @description: If Type(LeftHandSideExpression) is not Reference, throw ReferenceError (or SyntaxError). Check operator is "x &= y";
+* @negative
+*/
+
+//CHECK#1
+try {
+ var z = (1 &= 1);
+ $ERROR('#1.1: 1 &= 1 throw ReferenceError (or SyntaxError). Actual: ' + (z));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 &= 1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ var z = (1 &= 1);
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T1.js
new file mode 100644
index 000000000..045da8110
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T1;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x *= y;
+*/
+
+//CHECK#1
+var x = 1;
+x *= -1;
+if (x !== -1) {
+ $ERROR('#1: var x = 1; x *= -1; x === -1. Actual: ' + (x));
+}
+
+//CHECK#2
+y = 1;
+y *= -1;
+if (y !== -1) {
+ $ERROR('#2: y = 1; y *= -1; y === -1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T10.js
new file mode 100644
index 000000000..5ea0d2d3a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T10.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T10;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x ^= y;
+*/
+
+//CHECK#1
+var x = 0;
+x ^= 1;
+if (x !== 1) {
+ $ERROR('#1: var x = 0; x ^= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+y = 1;
+y ^= 0;
+if (y !== 1) {
+ $ERROR('#2: y = 1; y ^= 0; y === 1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T11.js
new file mode 100644
index 000000000..542cd4fe3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T11.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T11;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x |= y;
+*/
+
+//CHECK#1
+var x = 0;
+x |= 1;
+if (x !== 1) {
+ $ERROR('#1: var x = 0; x |= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+y = 1;
+y |= 0;
+if (y !== 1) {
+ $ERROR('#2: y = 1; y |= 0; y === 1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T2.js
new file mode 100644
index 000000000..679c295f5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T2;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x /= y;
+*/
+
+//CHECK#1
+var x = 1;
+x /= -1;
+if (x !== -1) {
+ $ERROR('#1: var x = 1; x /= -1; x === -1. Actual: ' + (x));
+}
+
+//CHECK#2
+y = 1;
+y /= -1;
+if (y !== -1) {
+ $ERROR('#2: y = 1; y /= -1; y === -1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T3.js
new file mode 100644
index 000000000..cf65d0a05
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T3.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T3;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x %= y;
+*/
+
+//CHECK#1
+var x = -1;
+x %= 2;
+if (x !== -1) {
+ $ERROR('#1: var x = -1; x %= 2; x === -1. Actual: ' + (x));
+}
+
+//CHECK#2
+y = -1;
+y %= 2;
+if (y !== -1) {
+ $ERROR('#2: y = -1; y %= 2; y === -1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T4.js
new file mode 100644
index 000000000..0cbcad1e5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T4;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x += y;
+*/
+
+//CHECK#1
+var x = 1;
+x += 1;
+if (x !== 2) {
+ $ERROR('#1: var x = 1; x += 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+y = 1;
+y += 1;
+if (y !== 2) {
+ $ERROR('#2: y = 1; y += 1; y === 2. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T5.js
new file mode 100644
index 000000000..d84d38867
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T5.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T5;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x -= y;
+*/
+
+//CHECK#1
+var x = -1;
+x -= 1;
+if (x !== -2) {
+ $ERROR('#1: var x = -1; x -= 1; x === -2. Actual: ' + (x));
+}
+
+//CHECK#2
+y = -1;
+y -= 1;
+if (y !== -2) {
+ $ERROR('#2: y = -1; y -= 1; y === -2. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T6.js
new file mode 100644
index 000000000..70fd614fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T6.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T6;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x <<= y;
+*/
+
+//CHECK#1
+var x = 1;
+x <<= 1;
+if (x !== 2) {
+ $ERROR('#1: var x = 1; x <<= 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+y = 1;
+y <<= 1;
+if (y !== 2) {
+ $ERROR('#2: y = 1; y <<= 1; y === 2. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T7.js
new file mode 100644
index 000000000..d8bb6964d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T7.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T7;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x >>= y;
+*/
+
+//CHECK#1
+var x = 4;
+x >>= 1;
+if (x !== 2) {
+ $ERROR('#1: var x = 4; x >>= 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+y = 4;
+y >>= 1;
+if (y !== 2) {
+ $ERROR('#2: y = 4; y >>= 1; y === 2. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T8.js
new file mode 100644
index 000000000..f43989be9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T8.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T8;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x >>>= y;
+*/
+
+//CHECK#1
+var x = 4;
+x >>>= 1;
+if (x !== 2) {
+ $ERROR('#1: var x = 4; x >>>= 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+y = 4;
+y >>>= 1;
+if (y !== 2) {
+ $ERROR('#2: y = 4; y >>>= 1; y === 2. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T9.js
new file mode 100644
index 000000000..6b8877e93
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.1_T9.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.1_T9;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y uses PutValue(x, x @ y);
+ * @description: Checking Expression and Variable statements for x &= y;
+*/
+
+//CHECK#1
+var x = 1;
+x &= 1;
+if (x !== 1) {
+ $ERROR('#1: var x = 1; x &= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+y = 1;
+y &= 1;
+if (y !== 1) {
+ $ERROR('#2: y = 1; y &= 1; y === 1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T1.js
new file mode 100644
index 000000000..bea8af649
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T1;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x *= y;
+*/
+
+//CHECK#1
+var x = 1;
+var x1 = (x *= -1);
+if (x1 !== -1) {
+ $ERROR('#1: var x = 1; var x1 = (x *= -1); x1 === -1. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = 1;
+y1 = (y *= -1);
+if (y1 !== -1) {
+ $ERROR('#2: y = 1; y1 = (y *= -1); y1 === -1. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T10.js
new file mode 100644
index 000000000..d956f4f32
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T10.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T10;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x ^= y;
+*/
+
+//CHECK#1
+var x = 0;
+var x1 = (x ^= 1);
+if (x1 !== 1) {
+ $ERROR('#1: var x = 0; var x1 = (x ^= 1); x1 === 1. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = 1;
+y1 = (y ^= 0);
+if (y1 !== 1) {
+ $ERROR('#2: y = 1; y1 = (y ^= 0); y1 === 1. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T11.js
new file mode 100644
index 000000000..f2031d604
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T11.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T11;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x |= y;
+*/
+
+//CHECK#1
+var x = 0;
+var x1 = (x |= 1);
+if (x1 !== 1) {
+ $ERROR('#1: var x = 0; var x1 = (x |= 1); x1 === 1. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = 1;
+y1 = (y |= 0);
+if (y1 !== 1) {
+ $ERROR('#2: y = 1; y1 = (y |= 0); y1 === 1. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T2.js
new file mode 100644
index 000000000..bf3e4281d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T2;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x /= y;
+*/
+
+//CHECK#1
+var x = 1;
+var x1 = (x /= -1);
+if (x1 !== -1) {
+ $ERROR('#1: var x = 1; var x1 = (x /= -1); x1 === -1. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = 1;
+y1 = (y /= -1);
+if (y1 !== -1) {
+ $ERROR('#2: y = 1; y1 = (y /= -1); y1 === -1. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T3.js
new file mode 100644
index 000000000..2a4ecc387
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T3.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T3;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x %= y;
+*/
+
+//CHECK#1
+var x = -1;
+var x1 = (x %= 2);
+if (x1 !== -1) {
+ $ERROR('#1: var x = -1; var x1 = (x %= 2); x1 === -1. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = -1;
+y1 = (y %= 2);
+if (y1 !== -1) {
+ $ERROR('#2: y = -1; y1 = (y %= 2); y1 === -1. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T4.js
new file mode 100644
index 000000000..827c19773
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T4;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x += y;
+*/
+
+//CHECK#1
+var x = 1;
+var x1 = (x += 1);
+if (x1 !== 2) {
+ $ERROR('#1: var x = 1; var x1 = (x += 1); x1 === 2. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = 1;
+y1 = (y += 1);
+if (y1 !== 2) {
+ $ERROR('#2: y = 1; y1 = (y += 1); y1 === 2. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T5.js
new file mode 100644
index 000000000..d96373686
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T5.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T5;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x -= y;
+*/
+
+//CHECK#1
+var x = -1;
+var x1 = (x -= 1);
+if (x1 !== -2) {
+ $ERROR('#1: var x = -1; var x1 = (x -= 1); x1 === -2. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = -1;
+y1 = (y -= 1);
+if (y1 !== -2) {
+ $ERROR('#2: y = -1; y1 = (y -= 1); y1 === -2. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T6.js
new file mode 100644
index 000000000..799bb4d38
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T6.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T6;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x <<= y;
+*/
+
+//CHECK#1
+var x = 1;
+var x1 = (x <<= 1);
+if (x1 !== 2) {
+ $ERROR('#1: var x = 1; var x1 = (x <<= 1); x1 === 2. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = 1;
+y1 = (y <<= 1);
+if (y1 !== 2) {
+ $ERROR('#2: y = 1; y1 = (y <<= 1); y1 === 2. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T7.js
new file mode 100644
index 000000000..3d8efba58
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T7.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T7;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x >>= y;
+*/
+
+//CHECK#1
+var x = 4;
+var x1 = (x >>= 1);
+if (x1 !== 2) {
+ $ERROR('#1: var x = 4; var x1 = (x >>= 1); x1 === 2. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = 4;
+y1 = (y >>= 1);
+if (y1 !== 2) {
+ $ERROR('#2: y = 4; y1 = (y >>= 1); y1 === 2. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T8.js
new file mode 100644
index 000000000..e27708a3f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T8.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T8;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x >>>= y;
+*/
+
+//CHECK#1
+var x = 4;
+var x1 = (x >>>= 1);
+if (x1 !== 2) {
+ $ERROR('#1: var x = 4; var x1 = (x >>>= 1); x1 === 2. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = 4;
+y1 = (y >>>= 1);
+if (y1 !== 2) {
+ $ERROR('#2: y = 4; y1 = (y >>>= 1); y1 === 2. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T9.js
new file mode 100644
index 000000000..2cf6d4e78
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A3.2_T9.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A3.2_T9;
+ * @section: 11.13.2;
+ * @assertion: Operator x @= y returns x @ y;
+ * @description: Checking Expression and Variable statements for x &= y;
+*/
+
+//CHECK#1
+var x = 1;
+var x1 = (x &= 1);
+if (x1 !== 1) {
+ $ERROR('#1: var x = 1; var x1 = (x &= 1); x1 === 1. Actual: ' + (x1));
+}
+
+//CHECK#2
+y = 1;
+y1 = (y &= 1);
+if (y1 !== 1) {
+ $ERROR('#2: y = 1; y1 = (y &= 1); y1 === 1. Actual: ' + (y1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.1.js
new file mode 100644
index 000000000..73aaa2b52
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T1.1;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+x = true;
+x ^= true;
+if (x !== 0) {
+ $ERROR('#1: x = true; x ^= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x ^= true;
+if (x !== 0) {
+ $ERROR('#2: x = new Boolean(true); x ^= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x ^= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#3: x = true; x ^= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x ^= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = new Boolean(true); x ^= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.2.js
new file mode 100644
index 000000000..d1684aded
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T1.2;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x ^= 1;
+if (x !== 0) {
+ $ERROR('#1: x = 1; x ^= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x ^= 1;
+if (x !== 0) {
+ $ERROR('#2: x = new Number(1); x ^= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x ^= new Number(1);
+if (x !== 0) {
+ $ERROR('#3: x = 1; x ^= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x ^= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = new Number(1); x ^= new Number(1); x === 0. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.3.js
new file mode 100644
index 000000000..a6fa846b3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T1.3;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x ^= "1";
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x ^= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x ^= "1";
+if (x !== 0) {
+ $ERROR('#2: x = new String("1"); x ^= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x ^= new String("1");
+if (x !== 0) {
+ $ERROR('#3: x = "1"; x ^= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x ^= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = new String("1"); x ^= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "x";
+x ^= "1";
+if (x !== 1) {
+ $ERROR('#5: x = "x"; x ^= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x ^= "x";
+if (x !== 1) {
+ $ERROR('#6: x = "1"; x ^= "x"; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.4.js
new file mode 100644
index 000000000..17a47f3ed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T1.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T1.4;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+x = null;
+x ^= undefined;
+if (x !== 0) {
+ $ERROR('#1: x = null; x ^= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x ^= null;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x ^= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x ^= undefined;
+if (x !== 0) {
+ $ERROR('#3: x = undefined; x ^= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x ^= null;
+if (x !== 0) {
+ $ERROR('#4: x = null; x ^= null; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.1.js
new file mode 100644
index 000000000..037f1f696
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T2.1;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+x = true;
+x ^= 1;
+if (x !== 0) {
+ $ERROR('#1: x = true; x ^= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x ^= true;
+if (x !== 0) {
+ $ERROR('#2: x = 1; x ^= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x ^= 1;
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x ^= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x ^= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = 1; x ^= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x ^= new Number(1);
+if (x !== 0) {
+ $ERROR('#5: x = true; x ^= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x ^= true;
+if (x !== 0) {
+ $ERROR('#6: x = new Number(1); x ^= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x ^= new Number(1);
+if (x !== 0) {
+ $ERROR('#7: x = new Boolean(true); x ^= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x ^= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#8: x = new Number(1); x ^= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.2.js
new file mode 100644
index 000000000..8627c9e9b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T2.2;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x ^= 1;
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x ^= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x ^= "1";
+if (x !== 0) {
+ $ERROR('#2: x = 1; x ^= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x ^= 1;
+if (x !== 0) {
+ $ERROR('#3: x = new String("1"); x ^= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x ^= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = 1; x ^= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x ^= new Number(1);
+if (x !== 0) {
+ $ERROR('#5: x = "1"; x ^= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x ^= "1";
+if (x !== 0) {
+ $ERROR('#6: x = new Number(1); x ^= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x ^= new Number(1);
+if (x !== 0) {
+ $ERROR('#7: x = new String("1"); x ^= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x ^= new String("1");
+if (x !== 0) {
+ $ERROR('#8: x = new Number(1); x ^= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#9
+x = "x";
+x ^= 1;
+if (x !== 1) {
+ $ERROR('#9: x = "x"; x ^= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x ^= "x";
+if (x !== 1) {
+ $ERROR('#10: x = 1; x ^= "x"; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.3.js
new file mode 100644
index 000000000..ea682bdd4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T2.3;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x ^= null;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x ^= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x ^= 1;
+if (x !== 1) {
+ $ERROR('#2: x = null; x ^= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x ^= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x ^= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x ^= new Number(1);
+if (x !== 1) {
+ $ERROR('#4: x = null; x ^= new Number(1); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.4.js
new file mode 100644
index 000000000..7d5ed27e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T2.4;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x ^= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x ^= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x ^= 1;
+if (x !== 1) {
+ $ERROR('#2: x = undefined; x ^= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x ^= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x ^= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x ^= new Number(1);
+if (x !== 1) {
+ $ERROR('#4: x = undefined; x ^= new Number(1); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.5.js
new file mode 100644
index 000000000..49275a0e7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.5.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T2.5;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x ^= "1";
+if (x !== 0) {
+ $ERROR('#1: x = true; x ^= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x ^= true;
+if (x !== 0) {
+ $ERROR('#2: x = "1"; x ^= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x ^= "1";
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x ^= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x ^= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = "1"; x ^= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x ^= new String("1");
+if (x !== 0) {
+ $ERROR('#5: x = true; x ^= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x ^= true;
+if (x !== 0) {
+ $ERROR('#6: x = new String("1"); x ^= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x ^= new String("1");
+if (x !== 0) {
+ $ERROR('#7: x = new Boolean(true); x ^= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x ^= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#8: x = new String("1"); x ^= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.6.js
new file mode 100644
index 000000000..c0e2e8750
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T2.6;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x ^= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x ^= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x ^= "1";
+if (x !== 1) {
+ $ERROR('#2: x = undefined; x ^= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x ^= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x ^= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x ^= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = undefined; x ^= new String("1"); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.7.js
new file mode 100644
index 000000000..8302ff023
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.7.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T2.7;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x ^= null;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x ^= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x ^= "1";
+if (x !== 1) {
+ $ERROR('#2: x = null; x ^= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x ^= null;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x ^= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x ^= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = null; x ^= new String("1"); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.8.js
new file mode 100644
index 000000000..a32f87f27
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T2.8;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x ^= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = true; x ^= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x ^= true;
+if (x !== 1) {
+ $ERROR('#2: x = undefined; x ^= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x ^= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x ^= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x ^= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = undefined; x ^= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.9.js
new file mode 100644
index 000000000..a57c4572e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.10_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.10_T2.9;
+ * @section: 11.13.2, 11.10.2;
+ * @assertion: The production x ^= y is the same as x = x ^ y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x ^= null;
+if (x !== 1) {
+ $ERROR('#1: x = true; x ^= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x ^= true;
+if (x !== 1) {
+ $ERROR('#2: x = null; x ^= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x ^= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x ^= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x ^= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = null; x ^= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.1.js
new file mode 100644
index 000000000..587ba5bd9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T1.1;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+x = true;
+x |= true;
+if (x !== 1) {
+ $ERROR('#1: x = true; x |= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x |= true;
+if (x !== 1) {
+ $ERROR('#2: x = new Boolean(true); x |= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x |= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#3: x = true; x |= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x |= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = new Boolean(true); x |= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.2.js
new file mode 100644
index 000000000..83f5230f7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T1.2;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x |= 1;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x |= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x |= 1;
+if (x !== 1) {
+ $ERROR('#2: x = new Number(1); x |= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x |= new Number(1);
+if (x !== 1) {
+ $ERROR('#3: x = 1; x |= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x |= new Number(1);
+if (x !== 1) {
+ $ERROR('#4: x = new Number(1); x |= new Number(1); x === 1. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.3.js
new file mode 100644
index 000000000..85461758c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T1.3;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x |= "1";
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x |= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x |= "1";
+if (x !== 1) {
+ $ERROR('#2: x = new String("1"); x |= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x |= new String("1");
+if (x !== 1) {
+ $ERROR('#3: x = "1"; x |= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x |= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = new String("1"); x |= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "x";
+x |= "1";
+if (x !== 1) {
+ $ERROR('#5: x = "x"; x |= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x |= "x";
+if (x !== 1) {
+ $ERROR('#6: x = "1"; x |= "x"; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.4.js
new file mode 100644
index 000000000..60758ffd5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T1.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T1.4;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+x = null;
+x |= undefined;
+if (x !== 0) {
+ $ERROR('#1: x = null; x |= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x |= null;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x |= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x |= undefined;
+if (x !== 0) {
+ $ERROR('#3: x = undefined; x |= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x |= null;
+if (x !== 0) {
+ $ERROR('#4: x = null; x |= null; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.1.js
new file mode 100644
index 000000000..fb5b80a4d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T2.1;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+x = true;
+x |= 1;
+if (x !== 1) {
+ $ERROR('#1: x = true; x |= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x |= true;
+if (x !== 1) {
+ $ERROR('#2: x = 1; x |= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x |= 1;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x |= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x |= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = 1; x |= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x |= new Number(1);
+if (x !== 1) {
+ $ERROR('#5: x = true; x |= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x |= true;
+if (x !== 1) {
+ $ERROR('#6: x = new Number(1); x |= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x |= new Number(1);
+if (x !== 1) {
+ $ERROR('#7: x = new Boolean(true); x |= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x |= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#8: x = new Number(1); x |= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.2.js
new file mode 100644
index 000000000..550a4d24d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T2.2;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x |= 1;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x |= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x |= "1";
+if (x !== 1) {
+ $ERROR('#2: x = 1; x |= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x |= 1;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x |= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x |= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = 1; x |= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x |= new Number(1);
+if (x !== 1) {
+ $ERROR('#5: x = "1"; x |= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x |= "1";
+if (x !== 1) {
+ $ERROR('#6: x = new Number(1); x |= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x |= new Number(1);
+if (x !== 1) {
+ $ERROR('#7: x = new String("1"); x |= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x |= new String("1");
+if (x !== 1) {
+ $ERROR('#8: x = new Number(1); x |= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#9
+x = "x";
+x |= 1;
+if (x !== 1) {
+ $ERROR('#9: x = "x"; x |= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x |= "x";
+if (x !== 1) {
+ $ERROR('#10: x = 1; x |= "x"; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.3.js
new file mode 100644
index 000000000..12a8a1fc0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T2.3;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x |= null;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x |= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x |= 1;
+if (x !== 1) {
+ $ERROR('#2: x = null; x |= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x |= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x |= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x |= new Number(1);
+if (x !== 1) {
+ $ERROR('#4: x = null; x |= new Number(1); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.4.js
new file mode 100644
index 000000000..952d9f95a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T2.4;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x |= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x |= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x |= 1;
+if (x !== 1) {
+ $ERROR('#2: x = undefined; x |= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x |= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x |= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x |= new Number(1);
+if (x !== 1) {
+ $ERROR('#4: x = undefined; x |= new Number(1); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.5.js
new file mode 100644
index 000000000..1d653559a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.5.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T2.5;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x |= "1";
+if (x !== 1) {
+ $ERROR('#1: x = true; x |= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x |= true;
+if (x !== 1) {
+ $ERROR('#2: x = "1"; x |= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x |= "1";
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x |= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x |= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = "1"; x |= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x |= new String("1");
+if (x !== 1) {
+ $ERROR('#5: x = true; x |= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x |= true;
+if (x !== 1) {
+ $ERROR('#6: x = new String("1"); x |= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x |= new String("1");
+if (x !== 1) {
+ $ERROR('#7: x = new Boolean(true); x |= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x |= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#8: x = new String("1"); x |= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.6.js
new file mode 100644
index 000000000..31bb5f809
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T2.6;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x |= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x |= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x |= "1";
+if (x !== 1) {
+ $ERROR('#2: x = undefined; x |= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x |= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x |= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x |= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = undefined; x |= new String("1"); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.7.js
new file mode 100644
index 000000000..2ff06002e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.7.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T2.7;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x |= null;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x |= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x |= "1";
+if (x !== 1) {
+ $ERROR('#2: x = null; x |= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x |= null;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x |= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x |= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = null; x |= new String("1"); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.8.js
new file mode 100644
index 000000000..a931ee049
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T2.8;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x |= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = true; x |= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x |= true;
+if (x !== 1) {
+ $ERROR('#2: x = undefined; x |= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x |= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x |= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x |= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = undefined; x |= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.9.js
new file mode 100644
index 000000000..3b550584b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.11_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.11_T2.9;
+ * @section: 11.13.2, 11.10.3;
+ * @assertion: The production x |= y is the same as x = x | y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x |= null;
+if (x !== 1) {
+ $ERROR('#1: x = true; x |= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x |= true;
+if (x !== 1) {
+ $ERROR('#2: x = null; x |= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x |= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x |= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x |= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = null; x |= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.1.js
new file mode 100644
index 000000000..c04cab1e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T1.1;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+x = true;
+x *= true;
+if (x !== 1) {
+ $ERROR('#1: x = true; x *= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x *= true;
+if (x !== 1) {
+ $ERROR('#2: x = new Boolean(true); x *= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x *= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#3: x = true; x *= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x *= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = new Boolean(true); x *= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.2.js
new file mode 100644
index 000000000..f8e67ce24
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T1.2;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x *= 1;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x *= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x *= 1;
+if (x !== 1) {
+ $ERROR('#2: x = new Number(1); x *= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x *= new Number(1);
+if (x !== 1) {
+ $ERROR('#3: x = 1; x *= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x *= new Number(1);
+if (x !== 1) {
+ $ERROR('#4: x = new Number(1); x *= new Number(1); x === 1. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.3.js
new file mode 100644
index 000000000..fcc001c37
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T1.3;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x *= "1";
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x *= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x *= "1";
+if (x !== 1) {
+ $ERROR('#2: x = new String("1"); x *= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x *= new String("1");
+if (x !== 1) {
+ $ERROR('#3: x = "1"; x *= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x *= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = new String("1"); x *= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "x";
+x *= "1";
+if (isNaN(x) !== true) {
+ $ERROR('#5: x = "x"; x *= "1"; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x *= "x";
+if (isNaN(x) !== true) {
+ $ERROR('#6: x = "1"; x *= "x"; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.4.js
new file mode 100644
index 000000000..321a01086
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T1.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T1.4;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+x = null;
+x *= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = null; x *= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x *= null;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x *= null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x *= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = undefined; x *= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x *= null;
+if (x !== 0) {
+ $ERROR('#4: x = null; x *= null; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.1.js
new file mode 100644
index 000000000..48e146f7a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T2.1;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Number (primitive and object);
+ */
+
+//CHECK#1
+x = true;
+x *= 1;
+if (x !== 1) {
+ $ERROR('#1: x = true; x *= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x *= true;
+if (x !== 1) {
+ $ERROR('#2: x = 1; x *= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x *= 1;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x *= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x *= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = 1; x *= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x *= new Number(1);
+if (x !== 1) {
+ $ERROR('#5: x = true; x *= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x *= true;
+if (x !== 1) {
+ $ERROR('#6: x = new Number(1); x *= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x *= new Number(1);
+if (x !== 1) {
+ $ERROR('#7: x = new Boolean(true); x *= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x *= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#8: x = new Number(1); x *= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.2.js
new file mode 100644
index 000000000..a22c75aef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T2.2;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x *= 1;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x *= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x *= "1";
+if (x !== 1) {
+ $ERROR('#2: x = 1; x *= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x *= 1;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x *= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x *= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = 1; x *= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x *= new Number(1);
+if (x !== 1) {
+ $ERROR('#5: x = "1"; x *= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x *= "1";
+if (x !== 1) {
+ $ERROR('#6: x = new Number(1); x *= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x *= new Number(1);
+if (x !== 1) {
+ $ERROR('#7: x = new String("1"); x *= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x *= new String("1");
+if (x !== 1) {
+ $ERROR('#8: x = new Number(1); x *= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#9
+x = "x";
+x *= 1;
+if (isNaN(x) !== true) {
+ $ERROR('#9: x = "x"; x *= 1; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x *= "x";
+if (isNaN(x) !== true) {
+ $ERROR('#10: x = 1; x *= "x"; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.3.js
new file mode 100644
index 000000000..a95f4c597
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T2.3;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x *= null;
+if (x !== 0) {
+ $ERROR('#1: x = 1; x *= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x *= 1;
+if (x !== 0) {
+ $ERROR('#2: x = null; x *= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x *= null;
+if (x !== 0) {
+ $ERROR('#3: x = new Number(1); x *= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x *= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = null; x *= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.4.js
new file mode 100644
index 000000000..8d13dab82
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T2.4;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x *= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = 1; x *= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x *= 1;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x *= 1; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x *= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Number(1); x *= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x *= new Number(1);
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x *= new Number(1); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.5.js
new file mode 100644
index 000000000..140c59b56
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.5.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T2.5;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) amd Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x *= "1";
+if (x !== 1) {
+ $ERROR('#1: x = true; x *= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x *= true;
+if (x !== 1) {
+ $ERROR('#2: x = "1"; x *= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x *= "1";
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x *= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x *= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = "1"; x *= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x *= new String("1");
+if (x !== 1) {
+ $ERROR('#5: x = true; x *= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x *= true;
+if (x !== 1) {
+ $ERROR('#6: x = new String("1"); x *= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x *= new String("1");
+if (x !== 1) {
+ $ERROR('#7: x = new Boolean(true); x *= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x *= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#8: x = new String("1"); x *= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.6.js
new file mode 100644
index 000000000..8db139b50
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T2.6;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) is different from Type(y) and both types vary between primitive String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x *= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = "1"; x *= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x *= "1";
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x *= "1"; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x *= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new String("1"); x *= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x *= new String("1");
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x *= new String("1"); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.7.js
new file mode 100644
index 000000000..a0a2f272f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.7.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T2.7;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x *= null;
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x *= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x *= "1";
+if (x !== 0) {
+ $ERROR('#2: x = null; x *= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x *= null;
+if (x !== 0) {
+ $ERROR('#3: x = new String("1"); x *= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x *= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = null; x *= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.8.js
new file mode 100644
index 000000000..eb68dec8c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T2.8;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x *= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = true; x *= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x *= true;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x *= true; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x *= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Boolean(true); x *= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x *= new Boolean(true);
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x *= new Boolean(true); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.9.js
new file mode 100644
index 000000000..571277dd2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.1_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.1_T2.9;
+ * @section: 11.13.2, 11.5.1;
+ * @assertion: The production x *= y is the same as the production x = x * y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x *= null;
+if (x !== 0) {
+ $ERROR('#1: x = true; x *= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x *= true;
+if (x !== 0) {
+ $ERROR('#2: x = null; x *= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x *= null;
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x *= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x *= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = null; x *= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.1.js
new file mode 100644
index 000000000..a81965545
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T1.1;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+x = true;
+x /= true;
+if (x !== 1) {
+ $ERROR('#1: x = true; x /= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x /= true;
+if (x !== 1) {
+ $ERROR('#2: x = new Boolean(true); x /= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x /= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#3: x = true; x /= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x /= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = new Boolean(true); x /= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.2.js
new file mode 100644
index 000000000..ef50dab10
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T1.2;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x /= 1;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x /= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x /= 1;
+if (x !== 1) {
+ $ERROR('#2: x = new Number(1); x /= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x /= new Number(1);
+if (x !== 1) {
+ $ERROR('#3: x = 1; x /= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x /= new Number(1);
+if (x !== 1) {
+ $ERROR('#4: x = new Number(1); x /= new Number(1); x === 1. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.3.js
new file mode 100644
index 000000000..777168afc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T1.3;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x /= "1";
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x /= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x /= "1";
+if (x !== 1) {
+ $ERROR('#2: x = new String("1"); x /= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x /= new String("1");
+if (x !== 1) {
+ $ERROR('#3: x = "1"; x /= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x /= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = new String("1"); x /= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "x";
+x /= "1";
+if (isNaN(x) !== true) {
+ $ERROR('#5: x = "x"; x /= "1"; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x /= "x";
+if (isNaN(x) !== true) {
+ $ERROR('#6: x = "1"; x /= "x"; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.4.js
new file mode 100644
index 000000000..d9869b6c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T1.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T1.4;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+x = null;
+x /= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = null; x /= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x /= null;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x /= null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x /= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = undefined; x /= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x /= null;
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = null; x /= null; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.1.js
new file mode 100644
index 000000000..01927117f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T2.1;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+x = true;
+x /= 1;
+if (x !== 1) {
+ $ERROR('#1: x = true; x /= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x /= true;
+if (x !== 1) {
+ $ERROR('#2: x = 1; x /= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x /= 1;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x /= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x /= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = 1; x /= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x /= new Number(1);
+if (x !== 1) {
+ $ERROR('#5: x = true; x /= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x /= true;
+if (x !== 1) {
+ $ERROR('#6: x = new Number(1); x /= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x /= new Number(1);
+if (x !== 1) {
+ $ERROR('#7: x = new Boolean(true); x /= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x /= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#8: x = new Number(1); x /= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.2.js
new file mode 100644
index 000000000..27bca2e1c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T2.2;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x /= 1;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x /= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x /= "1";
+if (x !== 1) {
+ $ERROR('#2: x = 1; x /= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x /= 1;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x /= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x /= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = 1; x /= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x /= new Number(1);
+if (x !== 1) {
+ $ERROR('#5: x = "1"; x /= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x /= "1";
+if (x !== 1) {
+ $ERROR('#6: x = new Number(1); x /= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x /= new Number(1);
+if (x !== 1) {
+ $ERROR('#7: x = new String("1"); x /= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x /= new String("1");
+if (x !== 1) {
+ $ERROR('#8: x = new Number(1); x /= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#9
+x = "x";
+x /= 1;
+if (isNaN(x) !== true) {
+ $ERROR('#9: x = "x"; x /= 1; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x /= "x";
+if (isNaN(x) !== true) {
+ $ERROR('#10: x = 1; x /= "x"; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.3.js
new file mode 100644
index 000000000..c3cfa4b89
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T2.3;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x /= null;
+if (x !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: x = 1; x /= null; x === +Infinity. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x /= 1;
+if (x !== 0) {
+ $ERROR('#2: x = null; x /= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x /= null;
+if (x !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: x = new Number(1); x /= null; x === +Infinity. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x /= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = null; x /= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.4.js
new file mode 100644
index 000000000..92a838a92
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T2.4;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x /= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = 1; x /= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x /= 1;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x /= 1; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x /= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Number(1); x /= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x /= new Number(1);
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x /= new Number(1); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.5.js
new file mode 100644
index 000000000..35c75b3cb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.5.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T2.5;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x /= "1";
+if (x !== 1) {
+ $ERROR('#1: x = true; x /= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x /= true;
+if (x !== 1) {
+ $ERROR('#2: x = "1"; x /= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x /= "1";
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x /= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x /= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = "1"; x /= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x /= new String("1");
+if (x !== 1) {
+ $ERROR('#5: x = true; x /= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x /= true;
+if (x !== 1) {
+ $ERROR('#6: x = new String("1"); x /= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x /= new String("1");
+if (x !== 1) {
+ $ERROR('#7: x = new Boolean(true); x /= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x /= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#8: x = new String("1"); x /= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.6.js
new file mode 100644
index 000000000..2322b5f3e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T2.6;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x /= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = "1"; x /= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x /= "1";
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x /= "1"; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x /= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new String("1"); x /= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x /= new String("1");
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x /= new String("1"); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.7.js
new file mode 100644
index 000000000..eabc0c031
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.7.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T2.7;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x /= null;
+if (x !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: x = "1"; x /= null; x === +Infinity. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x /= "1";
+if (x !== 0) {
+ $ERROR('#2: x = null; x /= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x /= null;
+if (x !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: x = new String("1"); x /= null; x === +Infinity. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x /= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = null; x /= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.8.js
new file mode 100644
index 000000000..61525c493
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T2.8;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x /= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = true; x /= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x /= true;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x /= true; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x /= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Boolean(true); x /= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x /= new Boolean(true);
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x /= new Boolean(true); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.9.js
new file mode 100644
index 000000000..8aec6395e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.2_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.2_T2.9;
+ * @section: 11.13.2, 11.5.2;
+ * @assertion: The production x /= y is the same as x = x / y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x /= null;
+if (x !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: x = true; x /= null; x === +Infinity. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x /= true;
+if (x !== 0) {
+ $ERROR('#2: x = null; x /= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x /= null;
+if (x !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: x = new Boolean(true); x /= null; x === +Infinity. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x /= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = null; x /= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.1.js
new file mode 100644
index 000000000..954fef612
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T1.1;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+x = true;
+x %= true;
+if (x !== 0) {
+ $ERROR('#1: x = true; x %= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x %= true;
+if (x !== 0) {
+ $ERROR('#2: x = new Boolean(true); x %= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x %= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#3: x = true; x %= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x %= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = new Boolean(true); x %= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.2.js
new file mode 100644
index 000000000..7d56c91b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T1.2;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x %= 1;
+if (x !== 0) {
+ $ERROR('#1: x = 1; x %= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x %= 1;
+if (x !== 0) {
+ $ERROR('#2: x = new Number(1); x %= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x %= new Number(1);
+if (x !== 0) {
+ $ERROR('#3: x = 1; x %= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x %= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = new Number(1); x %= new Number(1); x === 0. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.3.js
new file mode 100644
index 000000000..7dd40a5ad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T1.3;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x %= "1";
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x %= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x %= "1";
+if (x !== 0) {
+ $ERROR('#2: x = new String("1"); x %= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x %= new String("1");
+if (x !== 0) {
+ $ERROR('#3: x = "1"; x %= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x %= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = new String("1"); x %= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "x";
+x %= "1";
+if (isNaN(x) !== true) {
+ $ERROR('#5: x = "x"; x %= "1"; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x %= "x";
+if (isNaN(x) !== true) {
+ $ERROR('#6: x = "1"; x %= "x"; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.4.js
new file mode 100644
index 000000000..52122533e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T1.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T1.4;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+x = null;
+x %= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = null; x %= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x %= null;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x %= null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x %= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = undefined; x %= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x %= null;
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = null; x %= null; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.1.js
new file mode 100644
index 000000000..982187c00
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T2.1;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x %= 1;
+if (x !== 0) {
+ $ERROR('#1: x = true; x %= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x %= true;
+if (x !== 0) {
+ $ERROR('#2: x = 1; x %= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x %= 1;
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x %= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x %= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = 1; x %= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x %= new Number(1);
+if (x !== 0) {
+ $ERROR('#5: x = true; x %= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x %= true;
+if (x !== 0) {
+ $ERROR('#6: x = new Number(1); x %= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x %= new Number(1);
+if (x !== 0) {
+ $ERROR('#7: x = new Boolean(true); x %= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x %= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#8: x = new Number(1); x %= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.2.js
new file mode 100644
index 000000000..70b00e892
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T2.2;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x %= 1;
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x %= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x %= "1";
+if (x !== 0) {
+ $ERROR('#2: x = 1; x %= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x %= 1;
+if (x !== 0) {
+ $ERROR('#3: x = new String("1"); x %= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x %= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = 1; x %= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x %= new Number(1);
+if (x !== 0) {
+ $ERROR('#5: x = "1"; x %= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x %= "1";
+if (x !== 0) {
+ $ERROR('#6: x = new Number(1); x %= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x %= new Number(1);
+if (x !== 0) {
+ $ERROR('#7: x = new String("1"); x %= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x %= new String("1");
+if (x !== 0) {
+ $ERROR('#8: x = new Number(1); x %= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#9
+x = "x";
+x %= 1;
+if (isNaN(x) !== true) {
+ $ERROR('#9: x = "x"; x %= 1; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x %= "x";
+if (isNaN(x) !== true) {
+ $ERROR('#10: x = 1; x %= "x"; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.3.js
new file mode 100644
index 000000000..8cc97f61e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T2.3;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x %= null;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = 1; x %= null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x %= 1;
+if (x !== 0) {
+ $ERROR('#2: x = null; x %= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x %= null;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Number(1); x %= null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x %= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = null; x %= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.4.js
new file mode 100644
index 000000000..779ef3af4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T2.4;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x %= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = 1; x %= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x %= 1;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x %= 1; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x %= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Number(1); x %= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x %= new Number(1);
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x %= new Number(1); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.5.js
new file mode 100644
index 000000000..0032d59f8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.5.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T2.5;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x %= "1";
+if (x !== 0) {
+ $ERROR('#1: x = true; x %= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x %= true;
+if (x !== 0) {
+ $ERROR('#2: x = "1"; x %= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x %= "1";
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x %= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x %= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = "1"; x %= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x %= new String("1");
+if (x !== 0) {
+ $ERROR('#5: x = true; x %= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x %= true;
+if (x !== 0) {
+ $ERROR('#6: x = new String("1"); x %= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x %= new String("1");
+if (x !== 0) {
+ $ERROR('#7: x = new Boolean(true); x %= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x %= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#8: x = new String("1"); x %= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.6.js
new file mode 100644
index 000000000..e52994c5a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T2.6;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x %= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = "1"; x %= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x %= "1";
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x %= "1"; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x %= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new String("1"); x %= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x %= new String("1");
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x %= new String("1"); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.7.js
new file mode 100644
index 000000000..63d9e673e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.7.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T2.7;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x %= null;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = "1"; x %= null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x %= "1";
+if (x !== 0) {
+ $ERROR('#2: x = null; x %= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x %= null;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new String("1"); x %= null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x %= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = null; x %= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.8.js
new file mode 100644
index 000000000..a484981a7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T2.8;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x %= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = true; x %= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x %= true;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x %= true; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x %= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Boolean(true); x %= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x %= new Boolean(true);
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x %= new Boolean(true); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.9.js
new file mode 100644
index 000000000..0870a79d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.3_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.3_T2.9;
+ * @section: 11.13.2, 11.5.3;
+ * @assertion: The production x %= y is the same as x = x % y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x %= null;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = true; x %= null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x %= true;
+if (x !== 0) {
+ $ERROR('#2: x = null; x %= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x %= null;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Boolean(true); x %= null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x %= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = null; x %= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.1.js
new file mode 100644
index 000000000..ce9ed5c42
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T1.1;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+x = true;
+x += true;
+if (x !== 2) {
+ $ERROR('#1: x = true; x += true; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x += true;
+if (x !== 2) {
+ $ERROR('#2: x = new Boolean(true); x += true; x === 2. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x += new Boolean(true);
+if (x !== 2) {
+ $ERROR('#3: x = true; x += new Boolean(true); x === 2. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x += new Boolean(true);
+if (x !== 2) {
+ $ERROR('#4: x = new Boolean(true); x += new Boolean(true); x === 2. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.2.js
new file mode 100644
index 000000000..549e6321e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T1.2;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x += 1;
+if (x !== 2) {
+ $ERROR('#1: x = 1; x += 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x += 1;
+if (x !== 2) {
+ $ERROR('#2: x = new Number(1); x += 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x += new Number(1);
+if (x !== 2) {
+ $ERROR('#3: x = 1; x += new Number(1); x === 2. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x += new Number(1);
+if (x !== 2) {
+ $ERROR('#4: x = new Number(1); x += new Number(1); x === 2. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.3.js
new file mode 100644
index 000000000..6bf7dbc3c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T1.3;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+x = null;
+x += undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = null; x += undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x += null;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x += null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x += undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = undefined; x += undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x += null;
+if (x !== 0) {
+ $ERROR('#4: x = null; x += null; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.4.js
new file mode 100644
index 000000000..778d4b039
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T1.4.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T1.4;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x += "1";
+if (x !== "11") {
+ $ERROR('#1: x = "1"; x += "1"; x === "11". Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x += "1";
+if (x !== "11") {
+ $ERROR('#2: x = new String("1"); x += "1"; x === "11". Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x += new String("1");
+if (x !== "11") {
+ $ERROR('#3: x = "1"; x += new String("1"); x === "11". Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x += new String("1");
+if (x !== "11") {
+ $ERROR('#4: x = new String("1"); x += new String("1"); x === "11". Actual: ' + (x));
+}
+
+//CHECK#5
+if ("x" + "1" !=="x1") {
+ $ERROR('#5: x = "x"; x += "1"; x === "x1". Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x += "x";
+if (x !== "1x") {
+ $ERROR('#6: x = "1"; x += "x"; x === "1x". Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.1.js
new file mode 100644
index 000000000..28b80f896
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T2.1;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+x = true;
+x += 1;
+if (x !== 2) {
+ $ERROR('#1: x = true; x += 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x += true;
+if (x !== 2) {
+ $ERROR('#2: x = 1; x += true; x === 2. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x += 1;
+if (x !== 2) {
+ $ERROR('#3: x = new Boolean(true); x += 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x += new Boolean(true);
+if (x !== 2) {
+ $ERROR('#4: x = 1; x += new Boolean(true); x === 2. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x += new Number(1);
+if (x !== 2) {
+ $ERROR('#5: x = true; x += new Number(1); x === 2. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x += true;
+if (x !== 2) {
+ $ERROR('#6: x = new Number(1); x += true; x === 2. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x += new Number(1);
+if (x !== 2) {
+ $ERROR('#7: x = new Boolean(true); x += new Number(1); x === 2. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x += new Boolean(true);
+if (x !== 2) {
+ $ERROR('#8: x = new Number(1); x += new Boolean(true); x === 2. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.2.js
new file mode 100644
index 000000000..19ac09329
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.2.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T2.2;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x += null;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x += null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x += 1;
+if (x !== 1) {
+ $ERROR('#2: x = null; x += 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x += null;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x += null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x += new Number(1);
+if (x !== 1) {
+ $ERROR('#4: x = null; x += new Number(1); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.3.js
new file mode 100644
index 000000000..bf8b2eae9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T2.3;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x += undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = 1; x += undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x += 1;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x += 1; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x += undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Number(1); x += undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x += new Number(1);
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x += new Number(1); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.4.js
new file mode 100644
index 000000000..41a35ad91
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T2.4;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x += undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = true; x += undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x += true;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x += true; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x += undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Boolean(true); x += undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x += new Boolean(true);
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x += new Boolean(true); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.5.js
new file mode 100644
index 000000000..5fe192ddf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.5.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T2.5;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x += null;
+if (x !== 1) {
+ $ERROR('#1: x = true; x += null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x += true;
+if (x !== 1) {
+ $ERROR('#2: x = null; x += true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x += null;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x += null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x += new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = null; x += new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.6.js
new file mode 100644
index 000000000..2c56cf4ec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.6.js
@@ -0,0 +1,77 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T2.6;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x += 1;
+if (x !== "11") {
+ $ERROR('#1: x = "1"; x += 1; x === "11". Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x += "1";
+if (x !== "11") {
+ $ERROR('#2: x = 1; x += "1"; x === "11". Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x += 1;
+if (x !== "11") {
+ $ERROR('#3: x = new String("1"); x += 1; x === "11". Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x += new String("1");
+if (x !== "11") {
+ $ERROR('#4: x = 1; x += new String("1"); x === "11". Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x += new Number(1);
+if (x !== "11") {
+ $ERROR('#5: x = "1"; x += new Number(1); x === "11". Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x += "1";
+if (x !== "11") {
+ $ERROR('#6: x = new Number(1); x += "1"; x === "11". Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x += new Number(1);
+if (x !== "11") {
+ $ERROR('#7: x = new String("1"); x += new Number(1); x === "11". Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x += new String("1");
+if (x !== "11") {
+ $ERROR('#8: x = new Number(1); x += new String("1"); x === "11". Actual: ' + (x));
+}
+
+//CHECK#9
+if ("x" + 1 !=="x1") {
+ $ERROR('#9: x = "x"; x += 1; x === "x1". Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x += "x";
+if (x !== "1x") {
+ $ERROR('#10: x = 1; x += "x"; x === "1x". Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.7.js
new file mode 100644
index 000000000..5ffb9b1db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.7.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T2.7;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x += "1";
+if (x !== "true1") {
+ $ERROR('#1: x = true; x += "1"; x === "true1". Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x += true;
+if (x !== "1true") {
+ $ERROR('#2: x = "1"; x += true; x === "1true". Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x += "1";
+if (x !== "true1") {
+ $ERROR('#3: x = new Boolean(true); x += "1"; x === "true1". Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x += new Boolean(true);
+if (x !== "1true") {
+ $ERROR('#4: x = "1"; x += new Boolean(true); x === "1true". Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x += new String("1");
+if (x !== "true1") {
+ $ERROR('#5: x = true; x += new String("1"); x === "true1". Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x += true;
+if (x !== "1true") {
+ $ERROR('#6: x = new String("1"); x += true; x === "1true". Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x += new String("1");
+if (x !== "true1") {
+ $ERROR('#7: x = new Boolean(true); x += new String("1"); x === "true1". Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x += new Boolean(true);
+if (x !== "1true") {
+ $ERROR('#8: x = new String("1"); x += new Boolean(true); x === "1true". Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.8.js
new file mode 100644
index 000000000..4b47b57bc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T2.8;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x += undefined;
+if (x !== "1undefined") {
+ $ERROR('#1: x = "1"; x += undefined; x === "1undefined". Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x += "1";
+if (x !== "undefined1") {
+ $ERROR('#2: x = undefined; x += "1"; x === "undefined1". Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x += undefined;
+if (x !== "1undefined") {
+ $ERROR('#3: x = new String("1"); x += undefined; x === "1undefined". Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x += new String("1");
+if (x !== "undefined1") {
+ $ERROR('#4: x = undefined; x += new String("1"); x === "undefined1". Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.9.js
new file mode 100644
index 000000000..cd7e884ea
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.4_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.4_T2.9;
+ * @section: 11.13.2, 11.6.1;
+ * @assertion: The production x += y is the same as x = x + y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x += null;
+if (x !== "1null") {
+ $ERROR('#1: x = "1"; x += null; x === "1null". Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x += "1";
+if (x !== "null1") {
+ $ERROR('#2: x = null; x += "1"; x === "null1". Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x += null;
+if (x !== "1null") {
+ $ERROR('#3: x = new String("1"); x += null; x === "1null". Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x += new String("1");
+if (x !== "null1") {
+ $ERROR('#4: x = null; x += new String("1"); x === "null1". Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.1.js
new file mode 100644
index 000000000..4cdb840e0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T1.1;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+x = true;
+x -= true;
+if (x !== 0) {
+ $ERROR('#1: x = true; x -= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x -= true;
+if (x !== 0) {
+ $ERROR('#2: x = new Boolean(true); x -= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x -= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#3: x = true; x -= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x -= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = new Boolean(true); x -= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.2.js
new file mode 100644
index 000000000..a611daf66
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T1.2;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x -= 1;
+if (x !== 0) {
+ $ERROR('#1: x = 1; x -= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x -= 1;
+if (x !== 0) {
+ $ERROR('#2: x = new Number(1); x -= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x -= new Number(1);
+if (x !== 0) {
+ $ERROR('#3: x = 1; x -= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x -= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = new Number(1); x -= new Number(1); x === 0. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.3.js
new file mode 100644
index 000000000..2babc304f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T1.3;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x -= "1";
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x -= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x -= "1";
+if (x !== 0) {
+ $ERROR('#2: x = new String("1"); x -= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x -= new String("1");
+if (x !== 0) {
+ $ERROR('#3: x = "1"; x -= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x -= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = new String("1"); x -= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "x";
+x -= "1";
+if (isNaN(x) !== true) {
+ $ERROR('#5: x = "x"; x -= "1"; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x -= "x";
+if (isNaN(x) !== true) {
+ $ERROR('#6: x = "1"; x -= "x"; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.4.js
new file mode 100644
index 000000000..c957e2fe9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T1.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T1.4;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+x = null;
+x -= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = null; x -= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x -= null;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x -= null; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x -= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = undefined; x -= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x -= null;
+if (x !== 0) {
+ $ERROR('#4: x = null; x -= null; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.1.js
new file mode 100644
index 000000000..490a2e09d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T2.1;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+x = true;
+x -= 1;
+if (x !== 0) {
+ $ERROR('#1: x = true; x -= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x -= true;
+if (x !== 0) {
+ $ERROR('#2: x = 1; x -= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x -= 1;
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x -= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x -= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = 1; x -= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x -= new Number(1);
+if (x !== 0) {
+ $ERROR('#5: x = true; x -= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x -= true;
+if (x !== 0) {
+ $ERROR('#6: x = new Number(1); x -= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x -= new Number(1);
+if (x !== 0) {
+ $ERROR('#7: x = new Boolean(true); x -= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x -= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#8: x = new Number(1); x -= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.2.js
new file mode 100644
index 000000000..4657424dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T2.2;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x -= 1;
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x -= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x -= "1";
+if (x !== 0) {
+ $ERROR('#2: x = 1; x -= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x -= 1;
+if (x !== 0) {
+ $ERROR('#3: x = new String("1"); x -= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x -= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = 1; x -= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x -= new Number(1);
+if (x !== 0) {
+ $ERROR('#5: x = "1"; x -= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x -= "1";
+if (x !== 0) {
+ $ERROR('#6: x = new Number(1); x -= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x -= new Number(1);
+if (x !== 0) {
+ $ERROR('#7: x = new String("1"); x -= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x -= new String("1");
+if (x !== 0) {
+ $ERROR('#8: x = new Number(1); x -= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#9
+x = "x";
+x -= 1;
+if (isNaN(x) !== true) {
+ $ERROR('#9: x = "x"; x -= 1; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x -= "x";
+if (isNaN(x) !== true) {
+ $ERROR('#10: x = 1; x -= "x"; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.3.js
new file mode 100644
index 000000000..b7fcb35ff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T2.3;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x -= null;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x -= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x -= 1;
+if (x !== -1) {
+ $ERROR('#2: x = null; x -= 1; x === -1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x -= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x -= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x -= new Number(1);
+if (x !== -1) {
+ $ERROR('#4: x = null; x -= new Number(1); x === -1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.4.js
new file mode 100644
index 000000000..df000b659
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T2.4;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x -= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = 1; x -= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x -= 1;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x -= 1; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x -= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Number(1); x -= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x -= new Number(1);
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x -= new Number(1); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.5.js
new file mode 100644
index 000000000..e44af16f2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.5.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T2.5;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x -= "1";
+if (x !== 0) {
+ $ERROR('#1: x = true; x -= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x -= true;
+if (x !== 0) {
+ $ERROR('#2: x = "1"; x -= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x -= "1";
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x -= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x -= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = "1"; x -= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x -= new String("1");
+if (x !== 0) {
+ $ERROR('#5: x = true; x -= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x -= true;
+if (x !== 0) {
+ $ERROR('#6: x = new String("1"); x -= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x -= new String("1");
+if (x !== 0) {
+ $ERROR('#7: x = new Boolean(true); x -= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x -= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#8: x = new String("1"); x -= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.6.js
new file mode 100644
index 000000000..550ec15cc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T2.6;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x -= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = "1"; x -= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x -= "1";
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x -= "1"; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x -= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new String("1"); x -= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x -= new String("1");
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x -= new String("1"); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.7.js
new file mode 100644
index 000000000..aa7e114fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.7.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T2.7;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x -= null;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x -= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x -= "1";
+if (x !== -1) {
+ $ERROR('#2: x = null; x -= "1"; x === -1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x -= null;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x -= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x -= new String("1");
+if (x !== -1) {
+ $ERROR('#4: x = null; x -= new String("1"); x === -1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.8.js
new file mode 100644
index 000000000..151491ade
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T2.8;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x -= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#1: x = true; x -= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x -= true;
+if (isNaN(x) !== true) {
+ $ERROR('#2: x = undefined; x -= true; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x -= undefined;
+if (isNaN(x) !== true) {
+ $ERROR('#3: x = new Boolean(true); x -= undefined; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x -= new Boolean(true);
+if (isNaN(x) !== true) {
+ $ERROR('#4: x = undefined; x -= new Boolean(true); x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.9.js
new file mode 100644
index 000000000..dffa8ae58
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.5_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.5_T2.9;
+ * @section: 11.13.2, 11.6.2;
+ * @assertion: The production x -= y is the same as x = x - y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x -= null;
+if (x !== 1) {
+ $ERROR('#1: x = true; x -= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x -= true;
+if (x !== -1) {
+ $ERROR('#2: x = null; x -= true; x === -1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x -= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x -= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x -= new Boolean(true);
+if (x !== -1) {
+ $ERROR('#4: x = null; x -= new Boolean(true); x === -1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.1.js
new file mode 100644
index 000000000..501212a2a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T1.1;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+*/
+
+//CHECK#1
+x = true;
+x <<= true;
+if (x !== 2) {
+ $ERROR('#1: x = true; x <<= true; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x <<= true;
+if (x !== 2) {
+ $ERROR('#2: x = new Boolean(true); x <<= true; x === 2. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x <<= new Boolean(true);
+if (x !== 2) {
+ $ERROR('#3: x = true; x <<= new Boolean(true); x === 2. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x <<= new Boolean(true);
+if (x !== 2) {
+ $ERROR('#4: x = new Boolean(true); x <<= new Boolean(true); x === 2. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.2.js
new file mode 100644
index 000000000..04800f7f1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T1.2;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x <<= 1;
+if (x !== 2) {
+ $ERROR('#1: x = 1; x <<= 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x <<= 1;
+if (x !== 2) {
+ $ERROR('#2: x = new Number(1); x <<= 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x <<= new Number(1);
+if (x !== 2) {
+ $ERROR('#3: x = 1; x <<= new Number(1); x === 2. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x <<= new Number(1);
+if (x !== 2) {
+ $ERROR('#4: x = new Number(1); x <<= new Number(1); x === 2. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.3.js
new file mode 100644
index 000000000..1a2355664
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T1.3;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x <<= "1";
+if (x !== 2) {
+ $ERROR('#1: x = "1"; x <<= "1"; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x <<= "1";
+if (x !== 2) {
+ $ERROR('#2: x = new String("1"); x <<= "1"; x === 2. Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x <<= new String("1");
+if (x !== 2) {
+ $ERROR('#3: x = "1"; x <<= new String("1"); x === 2. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x <<= new String("1");
+if (x !== 2) {
+ $ERROR('#4: x = new String("1"); x <<= new String("1"); x === 2. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "x";
+x <<= "1";
+if (x !== 0) {
+ $ERROR('#5: x = "x"; x <<= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x <<= "x";
+if (x !== 1) {
+ $ERROR('#6: x = "1"; x <<= "x"; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.4.js
new file mode 100644
index 000000000..33a27854e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T1.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T1.4;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+x = null;
+x <<= undefined;
+if (x !== 0) {
+ $ERROR('#1: x = null; x <<= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x <<= null;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x <<= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x <<= undefined;
+if (x !== 0) {
+ $ERROR('#3: x = undefined; x <<= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x <<= null;
+if (x !== 0) {
+ $ERROR('#4: x = null; x <<= null; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.1.js
new file mode 100644
index 000000000..2e9c5103c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T2.1;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+x = true;
+x <<= 1;
+if (x !== 2) {
+ $ERROR('#1: x = true; x <<= 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x <<= true;
+if (x !== 2) {
+ $ERROR('#2: x = 1; x <<= true; x === 2. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x <<= 1;
+if (x !== 2) {
+ $ERROR('#3: x = new Boolean(true); x <<= 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x <<= new Boolean(true);
+if (x !== 2) {
+ $ERROR('#4: x = 1; x <<= new Boolean(true); x === 2. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x <<= new Number(1);
+if (x !== 2) {
+ $ERROR('#5: x = true; x <<= new Number(1); x === 2. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x <<= true;
+if (x !== 2) {
+ $ERROR('#6: x = new Number(1); x <<= true; x === 2. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x <<= new Number(1);
+if (x !== 2) {
+ $ERROR('#7: x = new Boolean(true); x <<= new Number(1); x === 2. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x <<= new Boolean(true);
+if (x !== 2) {
+ $ERROR('#8: x = new Number(1); x <<= new Boolean(true); x === 2. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.2.js
new file mode 100644
index 000000000..1b16fc94c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T2.2;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x <<= 1;
+if (x !== 2) {
+ $ERROR('#1: x = "1"; x <<= 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x <<= "1";
+if (x !== 2) {
+ $ERROR('#2: x = 1; x <<= "1"; x === 2. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x <<= 1;
+if (x !== 2) {
+ $ERROR('#3: x = new String("1"); x <<= 1; x === 2. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x <<= new String("1");
+if (x !== 2) {
+ $ERROR('#4: x = 1; x <<= new String("1"); x === 2. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x <<= new Number(1);
+if (x !== 2) {
+ $ERROR('#5: x = "1"; x <<= new Number(1); x === 2. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x <<= "1";
+if (x !== 2) {
+ $ERROR('#6: x = new Number(1); x <<= "1"; x === 2. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x <<= new Number(1);
+if (x !== 2) {
+ $ERROR('#7: x = new String("1"); x <<= new Number(1); x === 2. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x <<= new String("1");
+if (x !== 2) {
+ $ERROR('#8: x = new Number(1); x <<= new String("1"); x === 2. Actual: ' + (x));
+}
+
+//CHECK#9
+x = "x";
+x <<= 1;
+if (x !== 0) {
+ $ERROR('#9: x = "x"; x <<= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x <<= "x";
+if (x !== 1) {
+ $ERROR('#10: x = 1; x <<= "x"; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.3.js
new file mode 100644
index 000000000..7c5f17776
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T2.3;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x <<= null;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x <<= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x <<= 1;
+if (x !== 0) {
+ $ERROR('#2: x = null; x <<= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x <<= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x <<= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x <<= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = null; x <<= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.4.js
new file mode 100644
index 000000000..3800ab525
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T2.4;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x <<= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x <<= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x <<= 1;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x <<= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x <<= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x <<= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x <<= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x <<= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.5.js
new file mode 100644
index 000000000..18deaaaf0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.5.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T2.5;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x <<= "1";
+if (x !== 2) {
+ $ERROR('#1: x = true; x <<= "1"; x === 2. Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x <<= true;
+if (x !== 2) {
+ $ERROR('#2: x = "1"; x <<= true; x === 2. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x <<= "1";
+if (x !== 2) {
+ $ERROR('#3: x = new Boolean(true); x <<= "1"; x === 2. Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x <<= new Boolean(true);
+if (x !== 2) {
+ $ERROR('#4: x = "1"; x <<= new Boolean(true); x === 2. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x <<= new String("1");
+if (x !== 2) {
+ $ERROR('#5: x = true; x <<= new String("1"); x === 2. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x <<= true;
+if (x !== 2) {
+ $ERROR('#6: x = new String("1"); x <<= true; x === 2. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x <<= new String("1");
+if (x !== 2) {
+ $ERROR('#7: x = new Boolean(true); x <<= new String("1"); x === 2. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x <<= new Boolean(true);
+if (x !== 2) {
+ $ERROR('#8: x = new String("1"); x <<= new Boolean(true); x === 2. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.6.js
new file mode 100644
index 000000000..1cc5a4447
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T2.6;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x <<= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x <<= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x <<= "1";
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x <<= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x <<= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x <<= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x <<= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x <<= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.7.js
new file mode 100644
index 000000000..c52ad33ef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.7.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T2.7;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x <<= null;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x <<= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x <<= "1";
+if (x !== 0) {
+ $ERROR('#2: x = null; x <<= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x <<= null;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x <<= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x <<= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = null; x <<= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.8.js
new file mode 100644
index 000000000..f832c2a96
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T2.8;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x <<= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = true; x <<= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x <<= true;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x <<= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x <<= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x <<= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x <<= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x <<= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.9.js
new file mode 100644
index 000000000..3bb99368a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.6_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.6_T2.9;
+ * @section: 11.13.2, 11.7.1;
+ * @assertion: The production x <<= y is the same as x = x << y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x <<= null;
+if (x !== 1) {
+ $ERROR('#1: x = true; x <<= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x <<= true;
+if (x !== 0) {
+ $ERROR('#2: x = null; x <<= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x <<= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x <<= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x <<= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = null; x <<= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.1.js
new file mode 100644
index 000000000..71c200e37
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T1.1;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+x = true;
+x >>= true;
+if (x !== 0) {
+ $ERROR('#1: x = true; x >>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x >>= true;
+if (x !== 0) {
+ $ERROR('#2: x = new Boolean(true); x >>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x >>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#3: x = true; x >>= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x >>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = new Boolean(true); x >>= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.2.js
new file mode 100644
index 000000000..7f8ef5536
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T1.2;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x >>= 1;
+if (x !== 0) {
+ $ERROR('#1: x = 1; x >>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x >>= 1;
+if (x !== 0) {
+ $ERROR('#2: x = new Number(1); x >>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x >>= new Number(1);
+if (x !== 0) {
+ $ERROR('#3: x = 1; x >>= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x >>= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = new Number(1); x >>= new Number(1); x === 0. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.3.js
new file mode 100644
index 000000000..e8723881f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T1.3;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x >>= "1";
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x >>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x >>= "1";
+if (x !== 0) {
+ $ERROR('#2: x = new String("1"); x >>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x >>= new String("1");
+if (x !== 0) {
+ $ERROR('#3: x = "1"; x >>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x >>= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = new String("1"); x >>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "x";
+x >>= "1";
+if (x !== 0) {
+ $ERROR('#5: x = "x"; x >>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x >>= "x";
+if (x !== 1) {
+ $ERROR('#6: x = "1"; x >>= "x"; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.4.js
new file mode 100644
index 000000000..f5551f185
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T1.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T1.4;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+x = null;
+x >>= undefined;
+if (x !== 0) {
+ $ERROR('#1: x = null; x >>= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x >>= null;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x >>= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x >>= undefined;
+if (x !== 0) {
+ $ERROR('#3: x = undefined; x >>= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x >>= null;
+if (x !== 0) {
+ $ERROR('#4: x = null; x >>= null; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.1.js
new file mode 100644
index 000000000..13b5ba2ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T2.1;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+x = true;
+x >>= 1;
+if (x !== 0) {
+ $ERROR('#1: x = true; x >>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x >>= true;
+if (x !== 0) {
+ $ERROR('#2: x = 1; x >>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x >>= 1;
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x >>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x >>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = 1; x >>= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x >>= new Number(1);
+if (x !== 0) {
+ $ERROR('#5: x = true; x >>= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x >>= true;
+if (x !== 0) {
+ $ERROR('#6: x = new Number(1); x >>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x >>= new Number(1);
+if (x !== 0) {
+ $ERROR('#7: x = new Boolean(true); x >>= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x >>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#8: x = new Number(1); x >>= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.2.js
new file mode 100644
index 000000000..c62c9395e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T2.2;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x >>= 1;
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x >>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x >>= "1";
+if (x !== 0) {
+ $ERROR('#2: x = 1; x >>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x >>= 1;
+if (x !== 0) {
+ $ERROR('#3: x = new String("1"); x >>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x >>= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = 1; x >>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x >>= new Number(1);
+if (x !== 0) {
+ $ERROR('#5: x = "1"; x >>= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x >>= "1";
+if (x !== 0) {
+ $ERROR('#6: x = new Number(1); x >>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x >>= new Number(1);
+if (x !== 0) {
+ $ERROR('#7: x = new String("1"); x >>= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x >>= new String("1");
+if (x !== 0) {
+ $ERROR('#8: x = new Number(1); x >>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#9
+x = "x";
+x >>= 1;
+if (x !== 0) {
+ $ERROR('#9: x = "x"; x >>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x >>= "x";
+if (x !== 1) {
+ $ERROR('#10: x = 1; x >>= "x"; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.3.js
new file mode 100644
index 000000000..bfd29a362
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T2.3;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x >>= null;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x >>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x >>= 1;
+if (x !== 0) {
+ $ERROR('#2: x = null; x >>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x >>= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x >>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x >>= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = null; x >>= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.4.js
new file mode 100644
index 000000000..30cec32e3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T2.4;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x >>= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x >>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x >>= 1;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x >>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x >>= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x >>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x >>= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x >>= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.5.js
new file mode 100644
index 000000000..1a8aaa499
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.5.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T2.5;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x >>= "1";
+if (x !== 0) {
+ $ERROR('#1: x = true; x >>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x >>= true;
+if (x !== 0) {
+ $ERROR('#2: x = "1"; x >>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x >>= "1";
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x >>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x >>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = "1"; x >>= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x >>= new String("1");
+if (x !== 0) {
+ $ERROR('#5: x = true; x >>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x >>= true;
+if (x !== 0) {
+ $ERROR('#6: x = new String("1"); x >>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x >>= new String("1");
+if (x !== 0) {
+ $ERROR('#7: x = new Boolean(true); x >>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x >>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#8: x = new String("1"); x >>= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.6.js
new file mode 100644
index 000000000..55fd43ea1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T2.6;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x >>= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x >>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x >>= "1";
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x >>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x >>= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x >>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x >>= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x >>= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.7.js
new file mode 100644
index 000000000..fd9f5958b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.7.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T2.7;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x >>= null;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x >>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x >>= "1";
+if (x !== 0) {
+ $ERROR('#2: x = null; x >>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x >>= null;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x >>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x >>= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = null; x >>= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.8.js
new file mode 100644
index 000000000..750b7e95f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T2.8;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x >>= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = true; x >>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x >>= true;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x >>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x >>= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x >>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x >>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x >>= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.9.js
new file mode 100644
index 000000000..daeefb75b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.7_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.7_T2.9;
+ * @section: 11.13.2, 11.7.2;
+ * @assertion: The production x >>= y is the same as x = x >> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x >>= null;
+if (x !== 1) {
+ $ERROR('#1: x = true; x >>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x >>= true;
+if (x !== 0) {
+ $ERROR('#2: x = null; x >>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x >>= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x >>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x >>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = null; x >>= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.1.js
new file mode 100644
index 000000000..5e81122e8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T1.1;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+x = true;
+x >>>= true;
+if (x !== 0) {
+ $ERROR('#1: x = true; x >>>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x >>>= true;
+if (x !== 0) {
+ $ERROR('#2: x = new Boolean(true); x >>>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x >>>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#3: x = true; x >>>= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x >>>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = new Boolean(true); x >>>= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.2.js
new file mode 100644
index 000000000..d03839cc5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T1.2;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x >>>= 1;
+if (x !== 0) {
+ $ERROR('#1: x = 1; x >>>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x >>>= 1;
+if (x !== 0) {
+ $ERROR('#2: x = new Number(1); x >>>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x >>>= new Number(1);
+if (x !== 0) {
+ $ERROR('#3: x = 1; x >>>= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x >>>= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = new Number(1); x >>>= new Number(1); x === 0. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.3.js
new file mode 100644
index 000000000..d0863ac95
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T1.3;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x >>>= "1";
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x >>>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x >>>= "1";
+if (x !== 0) {
+ $ERROR('#2: x = new String("1"); x >>>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x >>>= new String("1");
+if (x !== 0) {
+ $ERROR('#3: x = "1"; x >>>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x >>>= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = new String("1"); x >>>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "x";
+x >>>= "1";
+if (x !== 0) {
+ $ERROR('#5: x = "x"; x >>>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x >>>= "x";
+if (x !== 1) {
+ $ERROR('#6: x = "1"; x >>>= "x"; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.4.js
new file mode 100644
index 000000000..86de3c341
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T1.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T1.4;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+x = null;
+x >>>= undefined;
+if (x !== 0) {
+ $ERROR('#1: x = null; x >>>= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x >>>= null;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x >>>= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x >>>= undefined;
+if (x !== 0) {
+ $ERROR('#3: x = undefined; x >>>= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x >>>= null;
+if (x !== 0) {
+ $ERROR('#4: x = null; x >>>= null; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.1.js
new file mode 100644
index 000000000..f6f1ef510
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T2.1;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+x = true;
+x >>>= 1;
+if (x !== 0) {
+ $ERROR('#1: x = true; x >>>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x >>>= true;
+if (x !== 0) {
+ $ERROR('#2: x = 1; x >>>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x >>>= 1;
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x >>>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x >>>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = 1; x >>>= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x >>>= new Number(1);
+if (x !== 0) {
+ $ERROR('#5: x = true; x >>>= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x >>>= true;
+if (x !== 0) {
+ $ERROR('#6: x = new Number(1); x >>>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x >>>= new Number(1);
+if (x !== 0) {
+ $ERROR('#7: x = new Boolean(true); x >>>= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x >>>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#8: x = new Number(1); x >>>= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.2.js
new file mode 100644
index 000000000..7745cd6a8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T2.2;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x >>>= 1;
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x >>>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x >>>= "1";
+if (x !== 0) {
+ $ERROR('#2: x = 1; x >>>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x >>>= 1;
+if (x !== 0) {
+ $ERROR('#3: x = new String("1"); x >>>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x >>>= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = 1; x >>>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x >>>= new Number(1);
+if (x !== 0) {
+ $ERROR('#5: x = "1"; x >>>= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x >>>= "1";
+if (x !== 0) {
+ $ERROR('#6: x = new Number(1); x >>>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x >>>= new Number(1);
+if (x !== 0) {
+ $ERROR('#7: x = new String("1"); x >>>= new Number(1); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x >>>= new String("1");
+if (x !== 0) {
+ $ERROR('#8: x = new Number(1); x >>>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#9
+x = "x";
+x >>>= 1;
+if (x !== 0) {
+ $ERROR('#9: x = "x"; x >>>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x >>>= "x";
+if (x !== 1) {
+ $ERROR('#10: x = 1; x >>>= "x"; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.3.js
new file mode 100644
index 000000000..343154982
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T2.3;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x >>>= null;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x >>>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x >>>= 1;
+if (x !== 0) {
+ $ERROR('#2: x = null; x >>>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x >>>= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x >>>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x >>>= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = null; x >>>= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.4.js
new file mode 100644
index 000000000..d070f661a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T2.4;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x >>>= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x >>>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x >>>= 1;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x >>>= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x >>>= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new Number(1); x >>>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x >>>= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x >>>= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.5.js
new file mode 100644
index 000000000..71e1af5c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.5.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T2.5;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x >>>= "1";
+if (x !== 0) {
+ $ERROR('#1: x = true; x >>>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x >>>= true;
+if (x !== 0) {
+ $ERROR('#2: x = "1"; x >>>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x >>>= "1";
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x >>>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x >>>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = "1"; x >>>= new Boolean(true); x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x >>>= new String("1");
+if (x !== 0) {
+ $ERROR('#5: x = true; x >>>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x >>>= true;
+if (x !== 0) {
+ $ERROR('#6: x = new String("1"); x >>>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x >>>= new String("1");
+if (x !== 0) {
+ $ERROR('#7: x = new Boolean(true); x >>>= new String("1"); x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x >>>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#8: x = new String("1"); x >>>= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.6.js
new file mode 100644
index 000000000..6517c4946
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T2.6;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x >>>= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x >>>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x >>>= "1";
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x >>>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x >>>= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x >>>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x >>>= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x >>>= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.7.js
new file mode 100644
index 000000000..f836c0ced
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.7.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T2.7;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x >>>= null;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x >>>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x >>>= "1";
+if (x !== 0) {
+ $ERROR('#2: x = null; x >>>= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x >>>= null;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x >>>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x >>>= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = null; x >>>= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.8.js
new file mode 100644
index 000000000..98835168b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T2.8;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x >>>= undefined;
+if (x !== 1) {
+ $ERROR('#1: x = true; x >>>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x >>>= true;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x >>>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x >>>= undefined;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x >>>= undefined; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x >>>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x >>>= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.9.js
new file mode 100644
index 000000000..55b42c8c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.8_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.8_T2.9;
+ * @section: 11.13.2, 11.7.3;
+ * @assertion: The production x >>>= y is the same as x = x >>> y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x >>>= null;
+if (x !== 1) {
+ $ERROR('#1: x = true; x >>>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x >>>= true;
+if (x !== 0) {
+ $ERROR('#2: x = null; x >>>= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x >>>= null;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x >>>= null; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x >>>= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = null; x >>>= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.1.js
new file mode 100644
index 000000000..dd8f529e4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.1.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T1.1;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+x = true;
+x &= true;
+if (x !== 1) {
+ $ERROR('#1: x = true; x &= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Boolean(true);
+x &= true;
+if (x !== 1) {
+ $ERROR('#2: x = new Boolean(true); x &= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = true;
+x &= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#3: x = true; x &= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Boolean(true);
+x &= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = new Boolean(true); x &= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.2.js
new file mode 100644
index 000000000..5074747ba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.2.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T1.2;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+x = 1;
+x &= 1;
+if (x !== 1) {
+ $ERROR('#1: x = 1; x &= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new Number(1);
+x &= 1;
+if (x !== 1) {
+ $ERROR('#2: x = new Number(1); x &= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = 1;
+x &= new Number(1);
+if (x !== 1) {
+ $ERROR('#3: x = 1; x &= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new Number(1);
+x &= new Number(1);
+if (x !== 1) {
+ $ERROR('#4: x = new Number(1); x &= new Number(1); x === 1. Actual: ' + (x));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.3.js
new file mode 100644
index 000000000..e411f1844
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.3.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T1.3;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+x = "1";
+x &= "1";
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x &= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = new String("1");
+x &= "1";
+if (x !== 1) {
+ $ERROR('#2: x = new String("1"); x &= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = "1";
+x &= new String("1");
+if (x !== 1) {
+ $ERROR('#3: x = "1"; x &= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = new String("1");
+x &= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = new String("1"); x &= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "x";
+x &= "1";
+if (x !== 0) {
+ $ERROR('#5: x = "x"; x &= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+x = "1";
+x &= "x";
+if (x !== 0) {
+ $ERROR('#6: x = "1"; x &= "x"; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.4.js
new file mode 100644
index 000000000..803652d95
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T1.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T1.4;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+*/
+
+//CHECK#1
+x = null;
+x &= undefined;
+if (x !== 0) {
+ $ERROR('#1: x = null; x &= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x &= null;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x &= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = undefined;
+x &= undefined;
+if (x !== 0) {
+ $ERROR('#3: x = undefined; x &= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x &= null;
+if (x !== 0) {
+ $ERROR('#4: x = null; x &= null; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.1.js
new file mode 100644
index 000000000..8ebad51d4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.1.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T2.1;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+x = true;
+x &= 1;
+if (x !== 1) {
+ $ERROR('#1: x = true; x &= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x &= true;
+if (x !== 1) {
+ $ERROR('#2: x = 1; x &= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x &= 1;
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x &= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x &= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = 1; x &= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x &= new Number(1);
+if (x !== 1) {
+ $ERROR('#5: x = true; x &= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x &= true;
+if (x !== 1) {
+ $ERROR('#6: x = new Number(1); x &= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x &= new Number(1);
+if (x !== 1) {
+ $ERROR('#7: x = new Boolean(true); x &= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x &= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#8: x = new Number(1); x &= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.2.js
new file mode 100644
index 000000000..4015289ea
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.2.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T2.2;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+x = "1";
+x &= 1;
+if (x !== 1) {
+ $ERROR('#1: x = "1"; x &= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = 1;
+x &= "1";
+if (x !== 1) {
+ $ERROR('#2: x = 1; x &= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x &= 1;
+if (x !== 1) {
+ $ERROR('#3: x = new String("1"); x &= 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = 1;
+x &= new String("1");
+if (x !== 1) {
+ $ERROR('#4: x = 1; x &= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = "1";
+x &= new Number(1);
+if (x !== 1) {
+ $ERROR('#5: x = "1"; x &= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new Number(1);
+x &= "1";
+if (x !== 1) {
+ $ERROR('#6: x = new Number(1); x &= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new String("1");
+x &= new Number(1);
+if (x !== 1) {
+ $ERROR('#7: x = new String("1"); x &= new Number(1); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new Number(1);
+x &= new String("1");
+if (x !== 1) {
+ $ERROR('#8: x = new Number(1); x &= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#9
+x = "x";
+x &= 1;
+if (x !== 0) {
+ $ERROR('#9: x = "x"; x &= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#10
+x = 1;
+x &= "x";
+if (x !== 0) {
+ $ERROR('#10: x = 1; x &= "x"; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.3.js
new file mode 100644
index 000000000..c5ee9f246
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T2.3;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = 1;
+x &= null;
+if (x !== 0) {
+ $ERROR('#1: x = 1; x &= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x &= 1;
+if (x !== 0) {
+ $ERROR('#2: x = null; x &= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x &= null;
+if (x !== 0) {
+ $ERROR('#3: x = new Number(1); x &= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x &= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = null; x &= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.4.js
new file mode 100644
index 000000000..f56b75fe8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T2.4;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = 1;
+x &= undefined;
+if (x !== 0) {
+ $ERROR('#1: x = 1; x &= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x &= 1;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x &= 1; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Number(1);
+x &= undefined;
+if (x !== 0) {
+ $ERROR('#3: x = new Number(1); x &= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x &= new Number(1);
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x &= new Number(1); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.5.js
new file mode 100644
index 000000000..15df5e80a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.5.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T2.5;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+x = true;
+x &= "1";
+if (x !== 1) {
+ $ERROR('#1: x = true; x &= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+x = "1";
+x &= true;
+if (x !== 1) {
+ $ERROR('#2: x = "1"; x &= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x &= "1";
+if (x !== 1) {
+ $ERROR('#3: x = new Boolean(true); x &= "1"; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+x = "1";
+x &= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#4: x = "1"; x &= new Boolean(true); x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+x = true;
+x &= new String("1");
+if (x !== 1) {
+ $ERROR('#5: x = true; x &= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+x = new String("1");
+x &= true;
+if (x !== 1) {
+ $ERROR('#6: x = new String("1"); x &= true; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+x = new Boolean(true);
+x &= new String("1");
+if (x !== 1) {
+ $ERROR('#7: x = new Boolean(true); x &= new String("1"); x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+x = new String("1");
+x &= new Boolean(true);
+if (x !== 1) {
+ $ERROR('#8: x = new String("1"); x &= new Boolean(true); x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.6.js
new file mode 100644
index 000000000..7f0651882
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.6.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T2.6;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = "1";
+x &= undefined;
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x &= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x &= "1";
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x &= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x &= undefined;
+if (x !== 0) {
+ $ERROR('#3: x = new String("1"); x &= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x &= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x &= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.7.js
new file mode 100644
index 000000000..21e1587a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.7.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T2.7;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = "1";
+x &= null;
+if (x !== 0) {
+ $ERROR('#1: x = "1"; x &= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x &= "1";
+if (x !== 0) {
+ $ERROR('#2: x = null; x &= "1"; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new String("1");
+x &= null;
+if (x !== 0) {
+ $ERROR('#3: x = new String("1"); x &= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x &= new String("1");
+if (x !== 0) {
+ $ERROR('#4: x = null; x &= new String("1"); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.8.js
new file mode 100644
index 000000000..44eec8102
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.8.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T2.8;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+x = true;
+x &= undefined;
+if (x !== 0) {
+ $ERROR('#1: x = true; x &= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = undefined;
+x &= true;
+if (x !== 0) {
+ $ERROR('#2: x = undefined; x &= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x &= undefined;
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x &= undefined; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = undefined;
+x &= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = undefined; x &= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.9.js
new file mode 100644
index 000000000..c02b8361a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.13_Assignment_Operators/11.13.2_Compound_Assignment/S11.13.2_A4.9_T2.9.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.13.2_A4.9_T2.9;
+ * @section: 11.13.2, 11.10.1;
+ * @assertion: The production x &= y is the same as x = x & y;
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+x = true;
+x &= null;
+if (x !== 0) {
+ $ERROR('#1: x = true; x &= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+x = null;
+x &= true;
+if (x !== 0) {
+ $ERROR('#2: x = null; x &= true; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+x = new Boolean(true);
+x &= null;
+if (x !== 0) {
+ $ERROR('#3: x = new Boolean(true); x &= null; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+x = null;
+x &= new Boolean(true);
+if (x !== 0) {
+ $ERROR('#4: x = null; x &= new Boolean(true); x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A1.js
new file mode 100644
index 000000000..5ff5156fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A1.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.14_A1;
+* @section: 11.14;
+* @assertion: White Space and Line Terminator between Expression and , or between , and AssignmentExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if ((eval("false\u0009,\u0009true")) !== true) {
+ $ERROR('#1: (false\\u0009,\\u0009true) === true');
+}
+
+//CHECK#2
+if ((eval("false\u000B,\u000Btrue")) !== true) {
+ $ERROR('#2: (false\\u000B,\\u000Btrue) === true');
+}
+
+//CHECK#3
+if ((eval("false\u000C,\u000Ctrue")) !== true) {
+ $ERROR('#3: (false\\u000C,\\u000Ctrue) === true');
+}
+
+//CHECK#4
+if ((eval("false\u0020,\u0020true")) !== true) {
+ $ERROR('#4: (false\\u0020,\\u0020true) === true');
+}
+
+//CHECK#5
+if ((eval("false\u00A0,\u00A0true")) !== true) {
+ $ERROR('#5: (false\\u00A0,\\u00A0true) === true');
+}
+
+//CHECK#6
+if ((eval("false\u000A,\u000Atrue")) !== true) {
+ $ERROR('#6: (false\\u000A,\\u000Atrue) === true');
+}
+
+//CHECK#7
+if ((eval("false\u000D,\u000Dtrue")) !== true) {
+ $ERROR('#7: (false\\u000D,\\u000Dtrue) === true');
+}
+
+//CHECK#8
+if ((eval("false\u2028,\u2028true")) !== true) {
+ $ERROR('#8: (false\\u2028,\\u2028true) === true');
+}
+
+//CHECK#9
+if ((eval("false\u2029,\u2029true")) !== true) {
+ $ERROR('#9: (false\\u2029,\\u2029true) === true');
+}
+
+
+//CHECK#10
+if ((eval("false\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029,\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true")) !== true) {
+ $ERROR('#10: (false\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029,\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T1.js
new file mode 100644
index 000000000..604a35ff4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T1.js
@@ -0,0 +1,53 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.14_A2.1_T1;
+ * @section: 11.14;
+ * @assertion: Operator uses GetValue;
+ * @description: Either Expression is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if ((1,2) !== 2) {
+ $ERROR('#1: (1,2) === 2. Actual: ' + ((1,2)));
+}
+
+//CHECK#2
+var x = 1;
+if ((x, 2) !== 2) {
+ $ERROR('#2: var x = 1; (x, 2) === 2. Actual: ' + ((x, 2)));
+}
+
+//CHECK#3
+var y = 2;
+if ((1, y) !== 2) {
+ $ERROR('#3: var y = 2; (1, y) === 2. Actual: ' + ((1, y)));
+}
+
+//CHECK#4
+var x = 1;
+var y = 2;
+if ((x, y) !== 2) {
+ $ERROR('#4: var x = 1; var y = 2; (x, y) === 2. Actual: ' + ((x, y)));
+}
+
+//CHECK#5
+var x = 1;
+if ((x, x) !== 1) {
+ $ERROR('#5: var x = 1; (x, x) === 1. Actual: ' + ((x, x)));
+}
+
+//CHECK#6
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = true;
+objecty.prop = 1.1;
+if ((objectx.prop = false, objecty.prop) !== objecty.prop) {
+ $ERROR('#6: var objectx = new Object(); var objecty = new Object(); objectx.prop = true; objecty.prop = 1; (objectx.prop = false, objecty.prop) === objecty.prop. Actual: ' + ((objectx.prop = false, objecty.prop)));
+} else {
+ if (objectx.prop !== false) {
+ $ERROR('#6: var objectx = new Object(); var objecty = new Object(); objectx.prop = true; objecty.prop = 1; objectx.prop = false, objecty.prop; objectx.prop === false');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T2.js
new file mode 100644
index 000000000..20e8e187d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.14_A2.1_T2;
+* @section: 11.14;
+* @assertion: Operator uses GetValue;
+* @description: If GetBase(Expression) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x, 1;
+ $ERROR('#1.1: x, 1 throw ReferenceError. Actual: ' + (x, 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x, 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T3.js
new file mode 100644
index 000000000..dc095e058
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.14_A2.1_T3;
+* @section: 11.14;
+* @assertion: Operator uses GetValue;
+* @description: If GetBase(AssigmentExpression) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1, y;
+ $ERROR('#1.1: 1, y throw ReferenceError. Actual: ' + (1, y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1, y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A3.js
new file mode 100644
index 000000000..6d4a53ea4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.14_Comma_Operator/S11.14_A3.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.14_A3;
+* @section: 11.14;
+* @assertion: Comma Operator evaluates all Expressions and returns the last of them;
+* @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+var y = 0;
+var z = 0;
+if ((x = 1, y = 2, z = 3) !== 3) {
+ $ERROR('#1: var x = 0; var y = 0; var z = 0; (x = 1, y = 2, z = 3) === 3. Actual: ' + ((x = 1, y = 2, z = 3)));
+}
+
+var x = 0;
+var y = 0;
+var z = 0;
+x = 1, y = 2, z = 3;
+
+//CHECK#2
+if (x !== 1) {
+ $ERROR('#2: var x = 0; var y = 0; var z = 0; x = 1, y = 2, z = 3; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+if (y !== 2) {
+ $ERROR('#3: var x = 0; var y = 0; var z = 0; x = 1, y = 2, z = 3; y === 2. Actual: ' + (y));
+}
+
+//CHECK#4
+if (z !== 3) {
+ $ERROR('#4: var x = 0; var y = 0; var z = 0; x = 1, y = 2, z = 3; z === 3. Actual: ' + (z));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A1.js
new file mode 100644
index 000000000..dc790988f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A1.js
@@ -0,0 +1,12 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.1.1_A1;
+ * @section: 11.1.1;
+ * @assertion: The "this" is reserved word;
+ * @description: Checking if execution of "this=1" fails;
+ * @negative
+*/
+
+this = 1;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A2.js
new file mode 100644
index 000000000..0b8c7854d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.1.1_A2;
+ * @section: 11.1.1;
+ * @assertion: Being in global code, "this" and "eval("this")" return the global object;
+ * @description: Checking if execution of "this" and eval("this"), which are in global code, return the global object by using toString function;
+*/
+
+//CHECK#1
+if (this.toString() !== toString()) {
+ $ERROR('#1: this.toString() === toString(). Actual: ' + (this.toString()));
+}
+
+//CHECK#2
+if (eval("this").toString() !== toString()) {
+ $ERROR('#2: eval("this").toString() === toString(). Actual: ' + (this.toString()));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A3.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A3.1.js
new file mode 100644
index 000000000..55b81eedc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A3.1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.1.1_A3.1;
+ * @section: 11.1.1;
+ * @assertion: Being in function code, "this" and eval("this"), called as a functions, return the global object;
+ * @description: Creating function which returns "this" or eval("this");
+*/
+
+//CHECK#1
+function MyFunction() {return this}
+if (MyFunction() !== this) {
+ $ERROR('#1: function MyFunction() {return this} MyFunction() === this. Actual: ' + (MyFunction()));
+}
+
+//CHECK#2
+function MyFunction() {return eval("this")}
+if (MyFunction() !== this) {
+ $ERROR('#2: function MyFunction() {return eval("this")} MyFunction() === this. Actual: ' + (MyFunction()));
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A3.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A3.2.js
new file mode 100644
index 000000000..888489b24
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A3.2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.1.1_A3.2;
+ * @section: 11.1.1;
+ * @assertion: Being in function code, "this" and eval("this"), called as a constructors, return the object;
+ * @description: Create function. It have property, that returned "this";
+*/
+
+//CHECK#1
+function MyFunction() {this.THIS = this}
+if ((new MyFunction()).THIS.toString() !== "[object Object]") {
+ $ERROR('#1: function MyFunction() {this.THIS = this} (new MyFunction()).THIS.toString() !== "[object Object]". Actual: ' + ((new MyFunction()).THIS.toString()));
+}
+
+//CHECK#2
+function MyFunction() {this.THIS = eval("this")}
+if ((new MyFunction()).THIS.toString() !== "[object Object]") {
+ $ERROR('#2: function MyFunction() {this.THIS = eval("this")} (new MyFunction()).THIS.toString() !== "[object Object]". Actual: ' + ((new MyFunction()).THIS.toString()));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A4.1.js
new file mode 100644
index 000000000..b393237f6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A4.1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.1.1_A4.1;
+ * @section: 11.1.1;
+ * @assertion: Being in anonymous code, "this" and eval("this"), called as a function, return the global object;
+ * @description: Creating function with new Function() constructor;
+*/
+
+//CHECK#1
+var MyFunction = new Function("return this");
+if (MyFunction() !== this) {
+ $ERROR('#1: var MyFunction = new Function("return this"); MyFunction() === this. Actual: ' + (MyFunction()));
+}
+
+//CHECK#2
+var MyFunction = new Function("return eval(\'this\')");
+if (MyFunction() !== this) {
+ $ERROR('#2: var MyFunction = new Function("return eval(\'this\')"); MyFunction() === this. Actual: ' + (MyFunction()));
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A4.2.js
new file mode 100644
index 000000000..ddf3f81f6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.1_The_this_Keyword/S11.1.1_A4.2.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.1.1_A4.2;
+ * @section: 11.1.1;
+ * @assertion: Being in anonymous code, "this" and eval("this"), called as a constructor, return the object;
+ * @description: Creating function by using new Function() constructor. It has the property, which returns "this";
+*/
+
+//CHECK#1
+var MyFunction = new Function("this.THIS = this");
+var MyObject = new MyFunction();
+if (MyObject.THIS.toString() !== "[object Object]") {
+ $ERROR('#1: var MyFunction = new Function("this.THIS = this"); var MyObject = new MyFunction(); MyObject.THIS.toString() === "[object Object]". Actual: ' + (MyObject.THIS.toString()));
+}
+
+//CHECK#2
+var MyFunction = new Function("this.THIS = eval(\'this\')");
+var MyObject = new MyFunction();
+if (MyObject.THIS.toString() !== "[object Object]") {
+ $ERROR('#2: var MyFunction = new Function("this.THIS = eval(\'this\')"); var MyObject = new MyFunction(); MyObject.THIS.toString() === "[object Object]". Actual: ' + (MyObject.THIS.toString()));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.2_Identifier_Reference/S11.1.2_A1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.2_Identifier_Reference/S11.1.2_A1_T1.js
new file mode 100644
index 000000000..259601464
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.2_Identifier_Reference/S11.1.2_A1_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.1.2_A1_T1;
+ * @section: 11.1.2;
+ * @assertion: The result of evaluating an Identifier is always a value of type Reference;
+ * @description: Creating variables without defining it;
+*/
+
+//CHECK#1
+if (this.x !== undefined) {
+ $ERROR('#1: this.x === undefined. Actual: ' + (this.x));
+}
+
+//CHECK#2
+var object = new Object();
+if (object.prop !== undefined) {
+ $ERROR('#2: var object = new Object(); object.prop === undefined. Actual: ' + (object.prop));
+}
+
+//CHECK#3
+this.y++;
+if (isNaN(y) !== true) {
+ $ERROR('#3: this.y++; y === Not-a-Number. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.2_Identifier_Reference/S11.1.2_A1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.2_Identifier_Reference/S11.1.2_A1_T2.js
new file mode 100644
index 000000000..e64114330
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.2_Identifier_Reference/S11.1.2_A1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.1.2_A1_T2;
+ * @section: 11.1.2;
+ * @assertion: The result of evaluating an Identifier is always a value of type Reference;
+ * @description: Trying to generate ReferenceError;
+*/
+
+//CHECK#1
+try {
+ this.z;
+ z;
+ $ERROR('#1.1: this.z; z === undefined throw ReferenceError. Actual: ' + (z));
+} catch(e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: this.z; z === undefined throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.1.js
new file mode 100644
index 000000000..1dee93826
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.4_A1.1;
+* @section: 11.1.4;
+* @assertion: Evaluate the production ArrayLiteral: [ ];
+* @description: Checking various properties of the array defined with expression "var array = []";
+*/
+
+var array = [];
+
+//CHECK#1
+if (typeof array !== "object") {
+ $ERROR('#1: var array = []; typeof array === "object". Actual: ' + (typeof array));
+}
+
+//CHECK#2
+if (array instanceof Array !== true) {
+ $ERROR('#2: var array = []; array instanceof Array === true');
+}
+
+//CHECK#3
+if (array.toString !== Array.prototype.toString) {
+ $ERROR('#3: var array = []; array.toString === Array.prototype.toString. Actual: ' + (array.toString));
+}
+
+//CHECK#4
+if (array.length !== 0) {
+ $ERROR('#4: var array = []; array.length === 0. Actual: ' + (array.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.2.js
new file mode 100644
index 000000000..5fe58b33f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.4_A1.2;
+* @section: 11.1.4;
+* @assertion: Evaluate the production ArrayLiteral: [ Elision ];
+* @description: Checking various properties the array defined with "var array = [,,,,,]";
+*/
+
+var array = [,,,,,];
+
+//CHECK#1
+if (typeof array !== "object") {
+ $ERROR('#1: var array = [,,,,,]; typeof array === "object". Actual: ' + (typeof array));
+}
+
+//CHECK#2
+if (array instanceof Array !== true) {
+ $ERROR('#2: var array = [,,,,,]; array instanceof Array === true');
+}
+
+//CHECK#3
+if (array.toString !== Array.prototype.toString) {
+ $ERROR('#3: var array = [,,,,,]; array.toString === Array.prototype.toString. Actual: ' + (array.toString));
+}
+
+//CHECK#4
+if (array.length !== 5) {
+ $ERROR('#4: var array = [,,,,,]; array.length === 5. Actual: ' + (array.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.3.js
new file mode 100644
index 000000000..6f85eaac1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.3.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.4_A1.3;
+* @section: 11.1.4;
+* @assertion: Evaluate the production ArrayLiteral: [ AssignmentExpression ];
+* @description: Checking various properteis and contents of the array defined with "var array = [1,2,3,4,5]";
+*/
+
+var array = [1,2,3,4,5];
+
+//CHECK#1
+if (typeof array !== "object") {
+ $ERROR('#1: var array = [1,2,3,4,5]; typeof array === "object". Actual: ' + (typeof array));
+}
+
+//CHECK#2
+if (array instanceof Array !== true) {
+ $ERROR('#2: var array = [1,2,3,4,5]; array instanceof Array === true');
+}
+
+//CHECK#3
+if (array.toString !== Array.prototype.toString) {
+ $ERROR('#3: var array = [1,2,3,4,5]; array.toString === Array.prototype.toString. Actual: ' + (array.toString));
+}
+
+//CHECK#4
+if (array.length !== 5) {
+ $ERROR('#4: var array = [1,2,3,4,5]; array.length === 5. Actual: ' + (array.length));
+}
+
+//CHECK#5
+if (array[0] !== 1) {
+ $ERROR('#5: var array = [1,2,3,4,5]; array[0] === 1. Actual: ' + (array[0]));
+}
+
+//CHECK#6
+if (array[1] !== 2) {
+ $ERROR('#6: var array = [1,2,3,4,5]; array[1] === 2. Actual: ' + (array[1]));
+}
+
+//CHECK#7
+if (array[2] !== 3) {
+ $ERROR('#7: var array = [1,2,3,4,5]; array[2] === 3. Actual: ' + (array[2]));
+}
+
+//CHECK#8
+if (array[3] !== 4) {
+ $ERROR('#8: var array = [1,2,3,4,5]; array[3] === 4. Actual: ' + (array[3]));
+}
+
+//CHECK#9
+if (array[4] !== 5) {
+ $ERROR('#9: var array = [1,2,3,4,5]; array[4] === 5. Actual: ' + (array[4]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.4.js
new file mode 100644
index 000000000..bad33531c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.4.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.4_A1.4;
+* @section: 11.1.4;
+* @assertion: Evaluate the production ArrayLiteral: [ Elision, AssignmentExpression ];
+* @description: Checking various properteis and content of the array defined with "var array = [,,,1,2]";
+*/
+
+var array = [,,,1,2];
+
+//CHECK#1
+if (typeof array !== "object") {
+ $ERROR('#1: var array = [,,,1,2]; typeof array === "object". Actual: ' + (typeof array));
+}
+
+//CHECK#2
+if (array instanceof Array !== true) {
+ $ERROR('#2: var array = [,,,1,2]; array instanceof Array === true');
+}
+
+//CHECK#3
+if (array.toString !== Array.prototype.toString) {
+ $ERROR('#3: var array = [,,,1,2]; array.toString === Array.prototype.toString. Actual: ' + (array.toString));
+}
+
+//CHECK#4
+if (array.length !== 5) {
+ $ERROR('#4: var array = [,,,1,2]; array.length === 5. Actual: ' + (array.length));
+}
+
+//CHECK#5
+if (array[0] !== undefined) {
+ $ERROR('#5: var array = [,,,1,2]; array[0] === undefined. Actual: ' + (array[0]));
+}
+
+//CHECK#6
+if (array[1] !== undefined) {
+ $ERROR('#6: var array = [,,,1,2]; array[1] === undefined. Actual: ' + (array[1]));
+}
+
+//CHECK#7
+if (array[2] !== undefined) {
+ $ERROR('#7: var array = [,,,1,2]; array[2] === undefined. Actual: ' + (array[2]));
+}
+
+//CHECK#8
+if (array[3] !== 1) {
+ $ERROR('#8: var array = [,,,1,2]; array[3] === 1. Actual: ' + (array[3]));
+}
+
+//CHECK#9
+if (array[4] !== 2) {
+ $ERROR('#9: var array = [,,,1,2]; array[4] === 2. Actual: ' + (array[4]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.5.js
new file mode 100644
index 000000000..78a77f9b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.5.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.4_A1.5;
+* @section: 11.1.4;
+* @assertion: Evaluate the production ArrayLiteral: [ AssignmentExpression, Elision ];
+* @description: Checking various properteis and contents of the array defined with "var array = [4,5,,,,]";
+*/
+
+var array = [4,5,,,,];
+
+//CHECK#1
+if (typeof array !== "object") {
+ $ERROR('#1: var array = [4,5,,,,]; typeof array === "object". Actual: ' + (typeof array));
+}
+
+//CHECK#2
+if (array instanceof Array !== true) {
+ $ERROR('#2: var array = [4,5,,,,]; array instanceof Array === true');
+}
+
+//CHECK#3
+if (array.toString !== Array.prototype.toString) {
+ $ERROR('#3: var array = [4,5,,,,]; array.toString === Array.prototype.toString. Actual: ' + (array.toString));
+}
+
+//CHECK#4
+if (array.length !== 5) {
+ $ERROR('#4: var array = [4,5,,,,]; array.length === 5. Actual: ' + (array.length));
+}
+
+//CHECK#5
+if (array[0] !== 4) {
+ $ERROR('#5: var array = [4,5,,,,]; array[0] === 4. Actual: ' + (array[0]));
+}
+
+//CHECK#6
+if (array[1] !== 5) {
+ $ERROR('#6: var array = [4,5,,,,]; array[1] === 5. Actual: ' + (array[1]));
+}
+
+//CHECK#7
+if (array[2] !== undefined) {
+ $ERROR('#7: var array = [4,5,,,,]; array[2] === undefined. Actual: ' + (array[2]));
+}
+
+//CHECK#8
+if (array[3] !== undefined) {
+ $ERROR('#8: var array = [4,5,,,,]; array[3] === undefined. Actual: ' + (array[3]));
+}
+
+//CHECK#9
+if (array[4] !== undefined) {
+ $ERROR('#9: var array = [4,5,,,,]; array[4] === undefined. Actual: ' + (array[4]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.6.js
new file mode 100644
index 000000000..d3bf2cbc6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.6.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.4_A1.6;
+* @section: 11.1.4;
+* @assertion: Evaluate the production ArrayLiteral: [ Elision, AssignmentExpression, Elision ];
+* @description: Checking various properteis and contents of the array defined with "var array = [,,3,,,]";
+*/
+
+var array = [,,3,,,];
+
+//CHECK#1
+if (typeof array !== "object") {
+ $ERROR('#1: var array = [,,3,,,]; typeof array === "object". Actual: ' + (typeof array));
+}
+
+//CHECK#2
+if (array instanceof Array !== true) {
+ $ERROR('#2: var array = [,,3,,,]; array instanceof Array === true');
+}
+
+//CHECK#3
+if (array.toString !== Array.prototype.toString) {
+ $ERROR('#3: var array = [,,3,,,]; array.toString === Array.prototype.toString. Actual: ' + (array.toString));
+}
+
+//CHECK#4
+if (array.length !== 5) {
+ $ERROR('#4: var array = [,,3,,,]; array.length === 5. Actual: ' + (array.length));
+}
+
+//CHECK#5
+if (array[0] !== undefined) {
+ $ERROR('#5: var array = [,,3,,,]; array[0] === undefined. Actual: ' + (array[0]));
+}
+
+//CHECK#6
+if (array[1] !== undefined) {
+ $ERROR('#6: var array = [,,3,,,]; array[1] === undefined. Actual: ' + (array[1]));
+}
+
+//CHECK#7
+if (array[2] !== 3) {
+ $ERROR('#7: var array = [,,3,,,]; array[2] === 3. Actual: ' + (array[2]));
+}
+
+//CHECK#8
+if (array[3] !== undefined) {
+ $ERROR('#8: var array = [,,3,,,]; array[3] === undefined. Actual: ' + (array[3]));
+}
+
+//CHECK#9
+if (array[4] !== undefined) {
+ $ERROR('#9: var array = [,,3,,,]; array[4] === undefined. Actual: ' + (array[4]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.7.js
new file mode 100644
index 000000000..c10e2fc7a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A1.7.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.4_A1.7;
+* @section: 11.1.4;
+* @assertion: Evaluate the production ArrayLiteral: [ AssignmentExpression, Elision, AssignmentExpression ];
+* @description: Checking various properteis and contents of the array defined with "var array = [1,2,,4,5]";
+*/
+
+var array = [1,2,,4,5];
+
+//CHECK#1
+if (typeof array !== "object") {
+ $ERROR('#1: var array = [1,2,,4,5]; typeof array === "object". Actual: ' + (typeof array));
+}
+
+//CHECK#2
+if (array instanceof Array !== true) {
+ $ERROR('#2: var array = [1,2,,4,5]; array instanceof Array === true');
+}
+
+//CHECK#3
+if (array.toString !== Array.prototype.toString) {
+ $ERROR('#3: var array = [1,2,,4,5]; array.toString === Array.prototype.toString. Actual: ' + (array.toString));
+}
+
+//CHECK#4
+if (array.length !== 5) {
+ $ERROR('#4: var array = [1,2,,4,5]; array.length === 5. Actual: ' + (array.length));
+}
+
+//CHECK#5
+if (array[0] !== 1) {
+ $ERROR('#5: var array = [1,2,,4,5]; array[0] === 1. Actual: ' + (array[0]));
+}
+
+//CHECK#6
+if (array[1] !== 2) {
+ $ERROR('#6: var array = [1,2,,4,5]; array[1] === 2. Actual: ' + (array[1]));
+}
+
+//CHECK#7
+if (array[2] !== undefined) {
+ $ERROR('#7: var array = [1,2,,4,5]; array[2] === undefined. Actual: ' + (array[2]));
+}
+
+//CHECK#8
+if (array[3] !== 4) {
+ $ERROR('#8: var array = [1,2,,4,5]; array[3] === 4. Actual: ' + (array[3]));
+}
+
+//CHECK#9
+if (array[4] !== 5) {
+ $ERROR('#9: var array = [1,2,,4,5]; array[4] === 5. Actual: ' + (array[4]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A2.js
new file mode 100644
index 000000000..ebdb09bbf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.4_Array_Initialiser/S11.1.4_A2.js
@@ -0,0 +1,127 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.4_A2;
+* @section: 11.1.4;
+* @assertion: Create multi dimensional array;
+* @description: Checking various properteis and contents of the arrya defined with "var array = [[1,2], [3], []]";
+*/
+
+var array = [[1,2], [3], []];
+
+//CHECK#1
+if (typeof array !== "object") {
+ $ERROR('#1: var array = [[1,2], [3], []]; typeof array === "object". Actual: ' + (typeof array));
+}
+
+//CHECK#2
+if (array instanceof Array !== true) {
+ $ERROR('#2: var array = [[1,2], [3], []]; array instanceof Array === true');
+}
+
+//CHECK#3
+if (array.toString !== Array.prototype.toString) {
+ $ERROR('#3: var array = [[1,2], [3], []]; array.toString === Array.prototype.toString. Actual: ' + (array.toString));
+}
+
+//CHECK#4
+if (array.length !== 3) {
+ $ERROR('#4: var array = [[1,2], [3], []]; array.length === 3. Actual: ' + (array.length));
+}
+
+var subarray = array[0];
+
+//CHECK#5
+if (typeof subarray !== "object") {
+ $ERROR('#5: var array = [[1,2], [3], []]; var subarray = array[0]; typeof subarray === "object". Actual: ' + (typeof subarray));
+}
+
+//CHECK#6
+if (subarray instanceof Array !== true) {
+ $ERROR('#6: var array = [[1,2], [3], []]; var subarray = array[0]; subarray instanceof Array === true');
+}
+
+//CHECK#7
+if (subarray.toString !== Array.prototype.toString) {
+ $ERROR('#7: var array = [[1,2], [3], []]; var subarray = array[0]; subarray.toString === Array.prototype.toString. Actual: ' + (subarray.toString));
+}
+
+//CHECK#8
+if (subarray.length !== 2) {
+ $ERROR('#8: var array = [[1,2], [3], []]; var subarray = array[0]; subarray.length === 2. Actual: ' + (subarray.length));
+}
+
+//CHECK#9
+if (subarray[0] !== 1) {
+ $ERROR('#9: var array = [[1,2], [3], []]; var subarray = array[0]; subarray[0] === 1. Actual: ' + (subarray[0]));
+}
+
+//CHECK#10
+if (subarray[1] !== 2) {
+ $ERROR('#10: var array = [[1,2], [3], []]; var subarray = array[1]; subarray[1] === 2. Actual: ' + (subarray[1]));
+}
+
+var subarray = array[1];
+
+//CHECK#11
+if (typeof subarray !== "object") {
+$ERROR('#11: var array = [[1,2], [3], []]; var subarray = array[1]; typeof subarray === "object". Actual: ' + (typeof subarray));
+}
+
+//CHECK#12
+if (subarray instanceof Array !== true) {
+$ERROR('#12: var array = [[1,2], [3], []]; var subarray = array[1]; subarray instanceof Array === true');
+}
+
+//CHECK#13
+if (subarray.toString !== Array.prototype.toString) {
+$ERROR('#13: var array = [[1,2], [3], []]; var subarray = array[1]; subarray.toString === Array.prototype.toString. Actual: ' + (subarray.toString));
+}
+
+//CHECK#14
+if (subarray.length !== 1) {
+$ERROR('#14: var array = [[1,2], [3], []]; var subarray = array[1]; subarray.length === 1. Actual: ' + (subarray.length));
+}
+
+//CHECK#15
+if (subarray[0] !== 3) {
+$ERROR('#15: var array = [[1,2], [3], []]; var subarray = array[1]; subarray[0] === 3. Actual: ' + (subarray[0]));
+}
+
+var subarray = array[2];
+
+//CHECK#16
+if (typeof subarray !== "object") {
+$ERROR('#16: var array = [[1,2], [3], []]; var subarray = array[2]; typeof subarray === "object". Actual: ' + (typeof subarray));
+}
+
+//CHECK#17
+if (subarray instanceof Array !== true) {
+$ERROR('#17: var array = [[1,2], [3], []]; var subarray = array[2]; subarray instanceof Array === true');
+}
+
+//CHECK#18
+if (subarray.toString !== Array.prototype.toString) {
+$ERROR('#18: var array = [[1,2], [3], []]; var subarray = array[2]; subarray.toString === Array.prototype.toString. Actual: ' + (subarray.toString));
+}
+
+//CHECK#19
+if (subarray.length !== 0) {
+$ERROR('#19: var array = [[1,2], [3], []]; var subarray = array[2]; subarray.length === 0. Actual: ' + (subarray.length));
+}
+
+//CHECK#20
+if (array[0][0] !== 1) {
+ $ERROR('#20: var array = [[1,2], [3], []]; array[0][0] === 1. Actual: ' + (array[0][0]));
+}
+
+//CHECK#21
+if (array[0][1] !== 2) {
+ $ERROR('#21: var array = [[1,2], [3], []]; array[0][1] === 2. Actual: ' + (array[0][1]));
+}
+
+//CHECK#22
+if (array[1][0] !== 3) {
+ $ERROR('#722: var array = [[1,2], [3], []]; array[1][0] === 3. Actual: ' + (array[1][0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.1.js
new file mode 100644
index 000000000..6c30ee266
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.5_A1.1;
+* @section: 11.1.5;
+* @assertion: Evaluate the production ObjectLiteral: { };
+* @description: Checking various properteis of the object defined with "var object = {}";
+*/
+
+var object = {};
+
+//CHECK#1
+if (typeof object !== "object") {
+ $ERROR('#1: var object = {}; typeof object === "object". Actual: ' + (typeof object));
+}
+
+//CHECK#2
+if (object instanceof Object !== true) {
+ $ERROR('#2: var object = {}; object instanceof Object === true');
+}
+
+//CHECK#3
+if (object.toString !== Object.prototype.toString) {
+ $ERROR('#3: var object = {}; object.toString === Object.prototype.toString. Actual: ' + (object.toString));
+}
+
+//CHECK#4
+if (object.toString() !== "[object Object]") {
+ $ERROR('#4: var object = {}; object.toString === "[object Object]". Actual: ' + (object.toString));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.2.js
new file mode 100644
index 000000000..31bd73453
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.2.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.5_A1.2;
+* @section: 11.1.5;
+* @assertion: Evaluate the production ObjectLiteral: { NumericLiteral : AssignmentExpression};
+* @description: Checking various properteis and contents of the object defined with "var object = {1 : true}";
+*/
+
+var object = {1 : true};
+
+//CHECK#1
+if (typeof object !== "object") {
+ $ERROR('#1: var object = {1 : true}; typeof object === "object". Actual: ' + (typeof object));
+}
+
+//CHECK#2
+if (object instanceof Object !== true) {
+ $ERROR('#2: var object = {1 : true}; object instanceof Object === true');
+}
+
+//CHECK#3
+if (object.toString !== Object.prototype.toString) {
+ $ERROR('#3: var object = {1 : true}; object.toString === Object.prototype.toString. Actual: ' + (object.toString));
+}
+
+//CHECK#4
+if (object[1] !== true) {
+ $ERROR('#4: var object = {1 : true}; object[1] === true');
+}
+
+//CHECK#5
+if (object["1"] !== true) {
+ $ERROR('#5: var object = {1 : true}; object["1"] === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.3.js
new file mode 100644
index 000000000..28d9a0fbd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.3.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.5_A1.3;
+* @section: 11.1.5;
+* @assertion: Evaluate the production ObjectLiteral: { StringLiteral : AssignmentExpression};
+* @description: Checking various properteis and contents of the object defined with "var object = {"x" : true}";
+*/
+
+var object = {"x" : true};
+
+//CHECK#1
+if (typeof object !== "object") {
+ $ERROR('#1: var object = {"x" : true}; typeof object === "object". Actual: ' + (typeof object));
+}
+
+//CHECK#2
+if (object instanceof Object !== true) {
+ $ERROR('#2: var object = {"x" : true}; object instanceof Object === true');
+}
+
+//CHECK#3
+if (object.toString !== Object.prototype.toString) {
+ $ERROR('#3: var object = {"x" : true}; object.toString === Object.prototype.toString. Actual: ' + (object.toString));
+}
+
+//CHECK#4
+if (object["x"] !== true) {
+ $ERROR('#4: var object = {"x" : true}; object["x"] === true');
+}
+
+//CHECK#5
+if (object.x !== true) {
+ $ERROR('#5: var object = {"x" : true}; object.x === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.4.js
new file mode 100644
index 000000000..77065a3be
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A1.4.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.5_A1.4;
+* @section: 11.1.5;
+* @assertion: Evaluate the production ObjectLiteral: { Identifier : AssignmentExpression};
+* @description: Checking various properteis and contents of the object defined with "var object = {prop : true}";
+*/
+
+var object = {prop : true};
+
+//CHECK#1
+if (typeof object !== "object") {
+ $ERROR('#1: var object = {prop : true}; typeof object === "object". Actual: ' + (typeof object));
+}
+
+//CHECK#2
+if (object instanceof Object !== true) {
+ $ERROR('#2: var object = {prop : true}; object instanceof Object === true');
+}
+
+//CHECK#3
+if (object.toString !== Object.prototype.toString) {
+ $ERROR('#3: var object = {prop : true}; object.toString === Object.prototype.toString. Actual: ' + (object.toString));
+}
+
+//CHECK#4
+if (object["prop"] !== true) {
+ $ERROR('#4: var object = {prop : true}; object["prop"] === true');
+}
+
+//CHECK#5
+if (object.prop !== true) {
+ $ERROR('#5: var object = {prop : true}; object.prop === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A2.js
new file mode 100644
index 000000000..7959ef1aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A2.js
@@ -0,0 +1,93 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.5_A2;
+* @section: 11.1.5;
+* @assertion: Evaluate the production ObjectLiteral: { PropertyName : AssignmentExpression };
+* @description: Creating property "prop" of various types(boolean, number and etc.);
+*/
+
+//CHECK#1
+var x = true;
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#1: var x = true; var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#2
+var x = new Boolean(true);
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#2: var x = new Boolean(true); var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#3
+var x = 1;
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#3: var x = 1; var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#4
+var x = new Number(1);
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#4: var x = new Number(1); var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#5
+var x = "1";
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#5: var x = "1"; var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#6
+var x = new String(1);
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#6: var x = new String(1); var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#7
+var x = undefined;
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#7: var x = undefined; var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#8
+var x = null;
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#8: var x = null; var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#9
+var x = {};
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#9: var x = {}; var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#10
+var x = [1,2];
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#10: var x = [1,2]; var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#11
+var x = function() {};
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#11: var x = function() {}; var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
+
+//CHECK#12
+var x = this;
+var object = {prop : x};
+if (object.prop !== x) {
+ $ERROR('#12: var x = this; var object = {prop : x}; object.prop === x. Actual: ' + (object.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A3.js
new file mode 100644
index 000000000..89a844b63
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.5_A3;
+* @section: 11.1.5;
+* @assertion: Evaluate the production ObjectLiteral: { PropertyNameAndValueList };
+* @description: Creating the object defined with "var object = {0 : 1, "1" : "x", o : {}}";
+*/
+
+var object = {0 : 1, "1" : "x", o : {}};
+
+//CHECK#1
+if (object[0] !== 1) {
+ $ERROR('#1: var object = {0 : 1; "1" : "x"; o : {}}; object[0] === 1. Actual: ' + (object[0]));
+}
+
+//CHECK#2
+if (object["1"] !== "x") {
+ $ERROR('#2: var object = {0 : 1; "1" : "x"; o : {}}; object["1"] === "x". Actual: ' + (object["1"]));
+}
+
+//CHECK#3
+if (typeof object.o !== "object") {
+ $ERROR('#1: var object = {0 : 1; "1" : "x"; o : {}}; typeof object.o === "object". Actual: ' + (typeof object.o));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.1.js
new file mode 100644
index 000000000..bda88873b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.5_A4.1;
+* @section: 11.1.5;
+* @assertion: The PropertyName is not BooleanLiteral;
+* @description: Checking if execution of "var object = {true : 1}" fails;
+* @negative
+*/
+
+//CHECK#1
+var object = {true : 1};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.2.js
new file mode 100644
index 000000000..d2fbf4d1e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.5_A4.2;
+* @section: 11.1.5;
+* @assertion: The PropertyName is not nullLiteral;
+* @description: Checking if execution of "var object = {null : true}" fails;
+* @negative
+*/
+
+//CHECK#1
+var object = {null : true};
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.3.js
new file mode 100644
index 000000000..639e41a45
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.5_Object_Initializer/S11.1.5_A4.3.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.5_A4.3;
+* @section: 11.1.5;
+* @assertion: The PropertyName is undefined, ToString(BooleanLiteral), ToString(nullLiteral);
+* @description: Creating properties with following names: undefined, 'true', 'null';
+*/
+
+//CHECK#1
+var object = {undefined : true};
+if (object.undefined !== true) {
+ $ERROR('#1: var object = {undefined : true}; object.undefined === true');
+}
+
+//CHECK#2
+var object = {undefined : true};
+if (object["undefined"] !== true) {
+ $ERROR('#2: var object = {undefined : true}; object["undefined"] === true');
+}
+
+//CHECK#3
+var object = {"true" : true};
+if (object["true"] !== true) {
+ $ERROR('#3: var object = {"true" : true}; object["true"] === true');
+}
+
+//CHECK#4
+var object = {"null" : true};
+if (object["null"] !== true) {
+ $ERROR('#4: var object = {"null" : true}; object["null"] === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A1.js
new file mode 100644
index 000000000..78c0e9d43
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.6_A1;
+* @section: 11.1.6, 7.2, 7.3;
+* @assertion: White Space and Line Terminator inside "grouping" operator are allowed;
+* @description: Inserting WhiteSpaces and LineTerminators into grouping operator. Eval is used;
+*/
+
+//CHECK#1
+if (eval("(\u00091\u0009)") !== 1) {
+ $ERROR('#1: (\\u00091\\u0009) === 1');
+}
+
+//CHECK#2
+if (eval("(\u000B1\u000B)") !== 1) {
+ $ERROR('#2: (\\u000B1\\u000B) === 1');
+}
+
+//CHECK#3
+if (eval("(\u000C1\u000C)") !== 1) {
+ $ERROR('#3: (\\u000C1\\u000C) === 1');
+}
+
+//CHECK#4
+if (eval("(\u00201\u0020)") !== 1) {
+ $ERROR('#4: (\\u00201\\u0020 === 1');
+}
+
+//CHECK#5
+if (eval("(\u00A01\u00A0)") !== 1) {
+ $ERROR('#5: (\\u00A01\\u00A0) === 1');
+}
+
+//CHECK#6
+if (eval("(\u000A1\u000A)") !== 1) {
+ $ERROR('#6: (\\u000A1\\u000A) === 1');
+}
+
+//CHECK#7
+if (eval("(\u000D1\u000D)") !== 1) {
+ $ERROR('#7: (\\u000D1\\u000D) === 1');
+}
+
+//CHECK#8
+if (eval("(\u20281\u2028)") !== 1) {
+ $ERROR('#8: (\\u20281\\u2028) === 1');
+}
+
+//CHECK#9
+if (eval("(\u20291\u2029)") !== 1) {
+ $ERROR('#9: (\\u20291\\u2029) === 1');
+}
+
+//CHECK#10
+if (eval("(\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029)") !== 1) {
+ $ERROR('#10: (\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029) === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A2.js
new file mode 100644
index 000000000..23152e4b0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.6_A2;
+* @section: 11.1.6;
+* @assertion: "This" operator doesn't use GetValue. The operators "delete" and "typeof" can be applied to parenthesised expressions;
+* @description: Applying "delete" and "typeof" operators to an undefined variable and a property of an object;
+*/
+
+//CHECK#1
+if (delete (x) !== true) {
+ $ERROR('#1: delete (x) === true');
+}
+
+//CHECK#2
+if (typeof (x) !== "undefined") {
+ $ERROR('#2: typeof (x) === "undefined". Actual: ' + (typeof (x)));
+}
+
+var object = {};
+//CHECK#3
+if (delete (object.prop) !== true) {
+ $ERROR('#3: var object = {}; delete (object.prop) === true');
+}
+
+//CHECK#4
+if (typeof (object.prop) !== "undefined") {
+ $ERROR('#4: var object = {}; typeof (object.prop) === "undefined". Actual: ' + (typeof (object.prop)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T1.js
new file mode 100644
index 000000000..245c653ee
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.6_A3_T1;
+* @section: 11.1.6;
+* @assertion: "This" operator only evaluates Expression;
+* @description: Applying grouping operator to Boolean;
+*/
+
+// Check for Boolean
+
+//CHECK#1
+if ((true) !== true) {
+ $ERROR('#1: (true) === true');
+}
+
+//CHECK#2
+var x = new Boolean(true);
+if ((x) !== x) {
+ $ERROR('#2: var x = new Boolean(true); (x) === x. Actual: ' + ((x)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T2.js
new file mode 100644
index 000000000..3593f1563
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.6_A3_T2;
+* @section: 11.1.6;
+* @assertion: "This" operator only evaluates Expression;
+* @description: Applying grouping operator to Number;
+*/
+
+//Check for Number
+
+//CHECK#1
+if ((1) !== 1) {
+ $ERROR('#1: (1) === 1. Actual: ' + ((1)));
+}
+
+//CHECK#2
+var x = new Number(1);
+if ((x) !== x) {
+ $ERROR('#2: var x = new Number(1); (x) === x. Actual: ' + ((x)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T3.js
new file mode 100644
index 000000000..9658c7616
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.6_A3_T3;
+* @section: 11.1.6;
+* @assertion: "This" operator only evaluates Expression;
+* @description: Applying grouping operator to String;
+*/
+
+//Check for String
+
+//CHECK#1
+if (("1") !== "1") {
+ $ERROR('#1: ("1") === "1". Actual: ' + (("1")));
+}
+
+//CHECK#2
+if (("x") !== "x") {
+ $ERROR('#2: ("x") === "x". Actual: ' + (("x")));
+}
+
+//CHECK#3
+var x = new Number("1");
+if ((x) !== x) {
+ $ERROR('#3: var x = new Number("1"); (x) === x. Actual: ' + ((x)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T4.js
new file mode 100644
index 000000000..0387ed371
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T4.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.6_A3_T4;
+* @section: 11.1.6;
+* @assertion: "This" operator only evaluates Expression;
+* @description: Applying grouping operator to undefined;
+*/
+
+//Check for undefined and null
+
+//CHECK#1
+if ((undefined) !== undefined) {
+ $ERROR('#1: (undefined) === undefined. Actual: ' + ((undefined)));
+}
+
+//CHECK#2
+if ((void 0) !== void 0) {
+ $ERROR('#2: (void 0) === void 0. Actual: ' + ((void 0)));
+}
+
+//CHECK#2
+if ((null) !== null) {
+ $ERROR('#2: (null) === null. Actual: ' + ((null)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T5.js
new file mode 100644
index 000000000..473673bf5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.6_A3_T5;
+* @section: 11.1.6;
+* @assertion: "This" operator only evaluates Expression;
+* @description: Using grouping operator in declaration of variables;
+*/
+
+//CHECK#1
+(x) = 1;
+if (x !== 1) {
+ $ERROR('#1: (x) = 1; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var y = 1; (y)++; ++(y); (y)--; --(y);
+if (y !== 1) {
+ $ERROR('#2: var y = 1; (y)++; ++(y); (y)--; --(y); y === 1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T6.js
new file mode 100644
index 000000000..3fa268af8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.1_Primary_Expressions/11.1.6_The_Grouping_Operator/S11.1.6_A3_T6.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.1.6_A3_T6;
+* @section: 11.1.6;
+* @assertion: "This" operator only evaluates Expression;
+* @description: Applying grouping operator to delete and typeof operators;
+*/
+
+//CHECK#1
+if (delete (x) !== true) {
+ $ERROR('#1: delete (x) === true');
+}
+
+//CHECK#2
+if (typeof (x) !== "undefined") {
+ $ERROR('#2: typeof (x) === "undefined". Actual: ' + (typeof (x)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A1.1.js
new file mode 100644
index 000000000..cc4aeb058
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A1.1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A1.1;
+* @section: 11.2.1, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between MemberExpression or CallExpression and "." and between "." and Identifier are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("Number\u0009.\u0009POSITIVE_INFINITY") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: Number\\u0009.\\u0009POSITIVE_INFINITY === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#2
+if (eval("Number\u000B.\u000BPOSITIVE_INFINITY") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2: Number\\u000B.\\u000BPOSITIVE_INFINITY === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#3
+if (eval("Number\u000C.\u000CPOSITIVE_INFINITY") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: Number\\u000C.\\u000CPOSITIVE_INFINITY === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#4
+if (eval("Number\u0020.\u0020POSITIVE_INFINITY") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4: Number\\u0020.\\u0020POSITIVE_INFINITY === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#5
+if (eval("Number\u00A0.\u00A0POSITIVE_INFINITY") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5: Number\\u00A0.\\u00A0POSITIVE_INFINITY === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#6
+if (eval("Number\u000A.\u000APOSITIVE_INFINITY") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#6: Number\\u000A.\\u000APOSITIVE_INFINITY === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#7
+if (eval("Number\u000D.\u000DPOSITIVE_INFINITY") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#7: Number\\u000D.\\u000DPOSITIVE_INFINITY === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#8
+if (eval("Number\u2028.\u2028POSITIVE_INFINITY") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#8: Number\\u2028.\\u2028POSITIVE_INFINITY === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#9
+if (eval("Number\u2029.\u2029POSITIVE_INFINITY") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#9: Number\\u2029.\\u2029POSITIVE_INFINITY === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#10
+if (eval("Number\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029.\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029POSITIVE_INFINITY") !== Number.POSITIVE_INFINITY) {
+ $ERROR('#10: Number\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029.\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029POSITIVE_INFINITY === Number.POSITIVE_INFINITY');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A1.2.js
new file mode 100644
index 000000000..3a8fb8fdd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A1.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A1.2;
+* @section: 11.2.1, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between "[" and MemberExpression or CallExpression and between Identifier and "]" are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval('Number[\u0009"POSITIVE_INFINITY"\u0009]') !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: Number[\\u0009"POSITIVE_INFINITY"\\u0009] === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#2
+if (eval('Number[\u000B"POSITIVE_INFINITY"\u000B]') !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2: Number[\\u000B"POSITIVE_INFINITY"\\u000B] === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#3
+if (eval('Number[\u000C"POSITIVE_INFINITY"\u000C]') !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: Number[\\u000C"POSITIVE_INFINITY"\\u000C] === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#4
+if (eval('Number[\u0020"POSITIVE_INFINITY"\u0020]') !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4: Number[\\u0020"POSITIVE_INFINITY"\\u0020] === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#5
+if (eval('Number[\u00A0"POSITIVE_INFINITY"\u00A0]') !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5: Number[\\u00A0"POSITIVE_INFINITY"\\u00A0] === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#6
+if (eval('Number[\u000A"POSITIVE_INFINITY"\u000A]') !== Number.POSITIVE_INFINITY) {
+ $ERROR('#6: Number[\\u000A"POSITIVE_INFINITY"\\u000A] === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#7
+if (eval('Number[\u000D"POSITIVE_INFINITY"\u000D]') !== Number.POSITIVE_INFINITY) {
+ $ERROR('#7: Number[\\u000D"POSITIVE_INFINITY"\\u000D] === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#8
+if (eval('Number[\u2028"POSITIVE_INFINITY"\u2028]') !== Number.POSITIVE_INFINITY) {
+ $ERROR('#8: Number[\\u2028"POSITIVE_INFINITY"\\u2028] === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#9
+if (eval('Number[\u2029"POSITIVE_INFINITY"\u2029]') !== Number.POSITIVE_INFINITY) {
+ $ERROR('#9: Number[\\u2029"POSITIVE_INFINITY"\\u2029] === Number.POSITIVE_INFINITY');
+}
+
+//CHECK#10
+if (eval('Number[\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029"POSITIVE_INFINITY"\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029]') !== Number.POSITIVE_INFINITY) {
+ $ERROR('#10: Number[\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029"POSITIVE_INFINITY"\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029] === Number.POSITIVE_INFINITY');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A2.js
new file mode 100644
index 000000000..d0acf5d96
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A2;
+* @section: 11.2.1;
+* @assertion: MemberExpression and CallExpression uses GetValue;
+* @description: If GetBase(MemberExpression or CallExpression) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ object[1];
+ $ERROR('#1.1: object[1] throw ReferenceError. Actual: ' + (object[1]));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: object[1] throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ object.prop;
+ $ERROR('#2.1: object.prop throw ReferenceError. Actual: ' + (object.prop));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#2.2: object.prop throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T1.js
new file mode 100644
index 000000000..2fba84dfb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A3_T1;
+* @section: 11.2.1, 9.9, 11.2.3, 15.6.4.2;
+* @assertion: MemberExpression calls ToObject(MemberExpression) and ToString(Expression). CallExpression calls ToObject(CallExpression) and ToString(Expression);
+* @description: Checking Boolean case;
+*/
+
+//CHECK#1
+if (true.toString() !== "true") {
+ $ERROR('#1: true.toString() === "true". Actual: ' + (true.toString()));
+}
+
+//CHECK#2
+if (false["toString"]() !== "false") {
+ $ERROR('#2: false["toString"]() === "false". Actual: ' + (false["toString"]()));
+}
+
+//CHECK#3
+if (new Boolean(true).toString() !== "true") {
+ $ERROR('#3: new Boolean(true).toString() === "true". Actual: ' + (new Boolean(true).toString()));
+}
+
+//CHECK#4
+if (new Boolean(false)["toString"]() !== "false") {
+ $ERROR('#4: new Boolean(false)["toString"]() === "false". Actual: ' + (new Boolean(false)["toString"]()));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T2.js
new file mode 100644
index 000000000..ffe3d28db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T2.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A3_T2;
+* @section: 11.2.1, 9.9, 11.2.3, 15.6.4.2;
+* @assertion: MemberExpression calls ToObject(MemberExpression) and ToString(Expression). CallExpression calls ToObject(CallExpression) and ToString(Expression)
+* @description: Checking Number case;
+*/
+
+//CHECK#1
+if (1..toString() !== "1") {
+ $ERROR('#1: 1..toString() === "1". Actual: ' + (1..toString()));
+}
+
+//CHECK#2
+if (1.1.toFixed(5) !== "1.10000") {
+ $ERROR('#2: 1.1.toFixed(5) === "1.10000". Actual: ' + (1.1.toFixed(5)));
+}
+
+//CHECK#3
+if (1["toString"]() !== "1") {
+ $ERROR('#3: 1["toString"]() === "1". Actual: ' + (1["toString"]()));
+}
+
+//CHECK#4
+if (1.["toFixed"](5) !== "1.00000") {
+ $ERROR('#4: 1.["toFixed"](5) === "1.00000". Actual: ' + (1.["toFixed"](5)));
+}
+
+//CHECK#5
+if (new Number(1).toString() !== "1") {
+ $ERROR('#5: new Number(1).toString() === "1". Actual: ' + (new Number(1).toString()));
+}
+
+//CHECK#6
+if (new Number(1)["toFixed"](5) !== "1.00000") {
+ $ERROR('#6: new Number(1)["toFixed"](5) === "1.00000". Actual: ' + (new Number(1)["toFixed"](5)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T3.js
new file mode 100644
index 000000000..661d45fdc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T3.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A3_T3;
+* @section: 11.2.1, 9.9, 11.2.3, 15.6.4.2;
+* @assertion: MemberExpression calls ToObject(MemberExpression) and ToString(Expression). CallExpression calls ToObject(CallExpression) and ToString(Expression)
+* @description: Checking String case;
+*
+*/
+
+//CHECK#1
+if ("abc123".charAt(5) !== "3") {
+ $ERROR('#1: "abc123".charAt(5) === "3". Actual: ' + ("abc123".charAt(5)));
+}
+
+//CHECK#2
+if ("abc123"["charAt"](0) !== "a") {
+ $ERROR('#2: "abc123"["charAt"](0) === "a". Actual: ' + ("abc123"["charAt"](0)));
+}
+
+//CHECK#3
+if ("abc123".length !== 6) {
+ $ERROR('#3: "abc123".length === 6. Actual: ' + ("abc123".length));
+}
+
+//CHECK#4
+if ("abc123"["length"] !== 6) {
+ $ERROR('#4: "abc123"["length"] === 6. Actual: ' + ("abc123"["length"]));
+}
+
+//CHECK#5
+if (new String("abc123").length !== 6) {
+ $ERROR('#5: new String("abc123").length === 6. Actual: ' + (new String("abc123").length));
+}
+
+//CHECK#6
+if (new String("abc123")["charAt"](2) !== "c") {
+ $ERROR('#6: new String("abc123")["charAt"](2) === "c". Actual: ' + (new String("abc123")["charAt"](2)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T4.js
new file mode 100644
index 000000000..d2c58c452
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T4.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A3_T4;
+* @section: 11.2.1, 9.9, 11.2.3, 15.6.4.2;
+* @assertion: MemberExpression calls ToObject(MemberExpression) and ToString(Expression). CallExpression calls ToObject(CallExpression) and ToString(Expression)
+* @description: Checking "undefined" case;
+*/
+
+//CHECK#1
+try {
+ undefined.toString();
+ $ERROR('#1.1: undefined.toString() throw TypeError. Actual: ' + (undefined.toString()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: undefined.toString() throw TypeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ undefined["toString"]();
+ $ERROR('#2.1: undefined["toString"]() throw TypeError. Actual: ' + (undefined["toString"]()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: undefined["toString"]() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T5.js
new file mode 100644
index 000000000..9f6e6d89f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A3_T5.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A3_T5;
+* @section: 11.2.1, 9.9, 11.2.3, 15.6.4.2;
+* @assertion: MemberExpression calls ToObject(MemberExpression) and ToString(Expression). CallExpression calls ToObject(CallExpression) and ToString(Expression)
+* @description: Checking "null" case;
+*/
+
+//CHECK#1
+try {
+ null.toString();
+ $ERROR('#1.1: null.toString() throw TypeError. Actual: ' + (null.toString()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: null.toString() throw TypeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ null["toString"]();
+ $ERROR('#2.1: null["toString"]() throw TypeError. Actual: ' + (null["toString"]()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: null["toString"]() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T1.js
new file mode 100644
index 000000000..6270eeb1c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A4_T1;
+* @section: 11.2.1;
+* @assertion: Check type of various properties;
+* @description: Checking properties of this object;
+*/
+
+//CHECK#1-32
+if (typeof (this.NaN) === "undefined") $ERROR('#1: typeof (this.NaN) !== "undefined"');
+if (typeof this['NaN'] === "undefined") $ERROR('#2: typeof this["NaN"] !== "undefined"');
+if (typeof this.Infinity === "undefined") $ERROR('#3: typeof this.Infinity !== "undefined"');
+if (typeof this['Infinity'] === "undefined") $ERROR('#4: typeof this["Infinity"] !== "undefined"');
+if (typeof this.parseInt === "undefined") $ERROR('#5: typeof this.parseInt !== "undefined"');
+if (typeof this['parseInt'] === "undefined") $ERROR('#6: typeof this["parseInt"] !== "undefined"');
+if (typeof this.parseFloat === "undefined") $ERROR('#7: typeof this.parseFloat !== "undefined"');
+if (typeof this['parseFloat'] === "undefined") $ERROR('#8: typeof this["parseFloat"] !== "undefined"');
+if (typeof this.escape === "undefined") $ERROR('#9: typeof this.escape !== "undefined"');
+if (typeof this['escape'] === "undefined") $ERROR('#10: typeof this["escape"] !== "undefined"');
+if (typeof this.unescape === "undefined") $ERROR('#11: typeof this.unescape !== "undefined"');
+if (typeof this['unescape'] === "undefined") $ERROR('#12: typeof this["unescape"] !== "undefined"');
+if (typeof this.isNaN === "undefined") $ERROR('#13: typeof this.isNaN !== "undefined"');
+if (typeof this['isNaN'] === "undefined") $ERROR('#14: typeof this["isNaN"] !== "undefined"');
+if (typeof this.isFinite === "undefined") $ERROR('#15: typeof this.isFinite !== "undefined"');
+if (typeof this['isFinite'] === "undefined") $ERROR('#16: typeof this["isFinite"] !== "undefined"');
+if (typeof this.Object === "undefined") $ERROR('#17: typeof this.Object !== "undefined"');
+if (typeof this['Object'] === "undefined") $ERROR('#18: typeof this["Object"] !== "undefined"');
+if (typeof this.Number === "undefined") $ERROR('#19: typeof this.Number !== "undefined"');
+if (typeof this['Number'] === "undefined") $ERROR('#20: typeof this["Number"] !== "undefined"');
+if (typeof this.Function === "undefined") $ERROR('#21: typeof this.Function !== "undefined"');
+if (typeof this['Function'] === "undefined") $ERROR('#22: typeof this["Function"] !== "undefined"');
+if (typeof this.Array === "undefined") $ERROR('#23: typeof this.Array !== "undefined"');
+if (typeof this['Array'] === "undefined") $ERROR('#24: typeof this["Array"] !== "undefined"');
+if (typeof this.String === "undefined") $ERROR('#25: typeof this.String !== "undefined"');
+if (typeof this['String'] === "undefined") $ERROR('#26: typeof this["String"] !== "undefined"');
+if (typeof this.Boolean === "undefined") $ERROR('#27: typeof this.Boolean !== "undefined"');
+if (typeof this['Boolean'] === "undefined") $ERROR('#28: typeof this["Boolean"] !== "undefined"');
+if (typeof this.Date === "undefined") $ERROR('#29: typeof this.Date !== "undefined"');
+if (typeof this['Date'] === "undefined") $ERROR('#30: typeof this["Date"] !== "undefined"');
+if (typeof this.Math === "undefined") $ERROR('#31: typeof this.Math !== "undefined"');
+if (typeof this['Math'] === "undefined") $ERROR('#32: typeof this["Math"] !== "undefined"');
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T2.js
new file mode 100644
index 000000000..cc99b0903
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A4_T2;
+* @section: 11.2.1;
+* @assertion: Check type of various properties;
+* @description: Checking properties and methods of Object objects;
+*/
+
+//CHECK#1-8
+if (typeof Object.prototype !== "object") $ERROR('#1: typeof Object.prototype === "object". Actual: ' + (typeof Object.prototype ));
+if (typeof Object['prototype'] !== "object") $ERROR('#2: typeof Object["prototype"] === "object". Actual: ' + (typeof Object["prototype"] ));
+if (typeof Object.toString !== "function") $ERROR('#3: typeof Object.toString === "function". Actual: ' + (typeof Object.toString ));
+if (typeof Object['toString'] !== "function") $ERROR('#4: typeof Object["toString"] === "function". Actual: ' + (typeof Object["toString"] ));
+if (typeof Object.valueOf !== "function") $ERROR('#5: typeof Object.valueOf === "function". Actual: ' + (typeof Object.valueOf ));
+if (typeof Object['valueOf'] !== "function") $ERROR('#6: typeof Object["valueOf"] === "function". Actual: ' + (typeof Object["valueOf"] ));
+if (typeof Object.constructor !== "function") $ERROR('#7: typeof Object.constructor === "function". Actual: ' + (typeof Object.constructor ));
+if (typeof Object['constructor'] !== "function") $ERROR('#8: typeof Object["constructor"] === "function". Actual: ' + (typeof Object["constructor"] ));
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T3.js
new file mode 100644
index 000000000..0661335f2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T3.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A4_T3;
+* @section: 11.2.1;
+* @assertion: Check type of various properties;
+* @description: Checking properties of the Function object;
+*/
+
+//CHECK#1-8
+if (typeof Function.prototype !== "function") $ERROR('#1: typeof Function.prototype === "function". Actual: ' + (typeof Function.prototype ));
+if (typeof Function['prototype'] !== "function") $ERROR('#2: typeof Function["prototype"] === "function". Actual: ' + (typeof Function["prototype"] ));
+if (typeof Function.prototype.toString !== "function") $ERROR('#3: typeof Function.prototype.toString === "function". Actual: ' + (typeof Function.prototype.toString ));
+if (typeof Function.prototype['toString'] !== "function") $ERROR('#4: typeof Function.prototype["toString"] === "function". Actual: ' + (typeof Function.prototype["toString"] ));
+if (typeof Function.prototype.length !== "number") $ERROR('#5: typeof Function.prototype.length === "number". Actual: ' + (typeof Function.prototype.length ));
+if (typeof Function.prototype['length'] !== "number") $ERROR('#6: typeof Function.prototype["length"] === "number". Actual: ' + (typeof Function.prototype["length"] ));
+if (typeof Function.prototype.valueOf !== "function") $ERROR('#7: typeof Function.prototype.valueOf === "function". Actual: ' + (typeof Function.prototype.valueOf ));
+if (typeof Function.prototype['valueOf'] !== "function") $ERROR('#8: typeof Function.prototype["valueOf"] === "function". Actual: ' + (typeof Function.prototype["valueOf"] ));
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T4.js
new file mode 100644
index 000000000..36f4b2a08
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T4.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A4_T4;
+* @section: 11.2.1;
+* @assertion: Check type of various properties;
+* @description: Checking properties of the Array object;
+*/
+
+//CHECK#1-8
+if (typeof Array.prototype !== "object") $ERROR('#1: typeof Array.prototype === "object". Actual: ' + (typeof Array.prototype ));
+if (typeof Array['prototype'] !== "object") $ERROR('#2: typeof Array["prototype"] === "object". Actual: ' + (typeof Array["prototype"] ));
+if (typeof Array.length !== "number") $ERROR('#3: typeof Array.length === "number". Actual: ' + (typeof Array.length ));
+if (typeof Array['length'] !== "number") $ERROR('#4: typeof Array["length"] === "number". Actual: ' + (typeof Array["length"] ));
+if (typeof Array.prototype.constructor !== "function") $ERROR('#5: typeof Array.prototype.constructor === "function". Actual: ' + (typeof Array.prototype.constructor ));
+if (typeof Array.prototype['constructor'] !== "function") $ERROR('#6: typeof Array.prototype["constructor"] === "function". Actual: ' + (typeof Array.prototype["constructor"] ));
+if (typeof Array.prototype.toString !== "function") $ERROR('#7: typeof Array.prototype.toString === "function". Actual: ' + (typeof Array.prototype.toString ));
+if (typeof Array.prototype['toString'] !== "function") $ERROR('#8: typeof Array.prototype["toString"] === "function". Actual: ' + (typeof Array.prototype["toString"] ));
+if (typeof Array.prototype.join !== "function") $ERROR('#9: typeof Array.prototype.join === "function". Actual: ' + (typeof Array.prototype.join ));
+if (typeof Array.prototype['join'] !== "function") $ERROR('#10: typeof Array.prototype["join"] === "function". Actual: ' + (typeof Array.prototype["join"] ));
+if (typeof Array.prototype.reverse !== "function") $ERROR('#11: typeof Array.prototype.reverse === "function". Actual: ' + (typeof Array.prototype.reverse ));
+if (typeof Array.prototype['reverse'] !== "function") $ERROR('#12: typeof Array.prototype["reverse"] === "function". Actual: ' + (typeof Array.prototype["reverse"] ));
+if (typeof Array.prototype.sort !== "function") $ERROR('#13: typeof Array.prototype.sort === "function". Actual: ' + (typeof Array.prototype.sort ));
+if (typeof Array.prototype['sort'] !== "function") $ERROR('#14: typeof Array.prototype["sort"] === "function". Actual: ' + (typeof Array.prototype["sort"] ));
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T5.js
new file mode 100644
index 000000000..1978fdb19
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T5.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A4_T5;
+* @section: 11.2.1;
+* @assertion: Check type of various properties;
+* @description: Checking properties of the String object;
+*/
+
+//CHECK#1-28
+if (typeof String.prototype !== "object") $ERROR('#1: typeof String.prototype === "object". Actual: ' + (typeof String.prototype ));
+if (typeof String['prototype'] !== "object") $ERROR('#2: typeof String["prototype"] === "object". Actual: ' + (typeof String["prototype"] ));
+if (typeof String.fromCharCode !== "function") $ERROR('#3: typeof String.fromCharCode === "function". Actual: ' + (typeof String.fromCharCode ));
+if (typeof String['fromCharCode'] !== "function") $ERROR('#4: typeof String["fromCharCode"] === "function". Actual: ' + (typeof String["fromCharCode"] ));
+if (typeof String.prototype.toString !== "function") $ERROR('#5: typeof String.prototype.toString === "function". Actual: ' + (typeof String.prototype.toString ));
+if (typeof String.prototype['toString'] !== "function") $ERROR('#6: typeof String.prototype["toString"] === "function". Actual: ' + (typeof String.prototype["toString"] ));
+if (typeof String.prototype.constructor !== "function") $ERROR('#7: typeof String.prototype.constructor === "function". Actual: ' + (typeof String.prototype.constructor ));
+if (typeof String.prototype['constructor'] !== "function") $ERROR('#8: typeof String.prototype["constructor"] === "function". Actual: ' + (typeof String.prototype["constructor"] ));
+if (typeof String.prototype.valueOf !== "function") $ERROR('#9: typeof String.prototype.valueOf === "function". Actual: ' + (typeof String.prototype.valueOf ));
+if (typeof String.prototype['valueOf'] !== "function") $ERROR('#10: typeof String.prototype["valueOf"] === "function". Actual: ' + (typeof String.prototype["valueOf"] ));
+if (typeof String.prototype.charAt !== "function") $ERROR('#11: typeof String.prototype.charAt === "function". Actual: ' + (typeof String.prototype.charAt ));
+if (typeof String.prototype['charAt'] !== "function") $ERROR('#12: typeof String.prototype["charAt"] === "function". Actual: ' + (typeof String.prototype["charAt"] ));
+if (typeof String.prototype.charCodeAt !== "function") $ERROR('#13: typeof String.prototype.charCodeAt === "function". Actual: ' + (typeof String.prototype.charCodeAt ));
+if (typeof String.prototype['charCodeAt'] !== "function") $ERROR('#14: typeof String.prototype["charCodeAt"] === "function". Actual: ' + (typeof String.prototype["charCodeAt"] ));
+if (typeof String.prototype.indexOf !== "function") $ERROR('#15: typeof String.prototype.indexOf === "function". Actual: ' + (typeof String.prototype.indexOf ));
+if (typeof String.prototype['indexOf'] !== "function") $ERROR('#16: typeof String.prototype["indexOf"] === "function". Actual: ' + (typeof String.prototype["indexOf"] ));
+if (typeof String.prototype.lastIndexOf !== "function") $ERROR('#17: typeof String.prototype.lastIndexOf === "function". Actual: ' + (typeof String.prototype.lastIndexOf ));
+if (typeof String.prototype['lastIndexOf'] !== "function") $ERROR('#18: typeof String.prototype["lastIndexOf"] === "function". Actual: ' + (typeof String.prototype["lastIndexOf"] ));
+if (typeof String.prototype.split !== "function") $ERROR('#19: typeof String.prototype.split === "function". Actual: ' + (typeof String.prototype.split ));
+if (typeof String.prototype['split'] !== "function") $ERROR('#20: typeof String.prototype["split"] === "function". Actual: ' + (typeof String.prototype["split"] ));
+if (typeof String.prototype.substring !== "function") $ERROR('#21: typeof String.prototype.substring === "function". Actual: ' + (typeof String.prototype.substring ));
+if (typeof String.prototype['substring'] !== "function") $ERROR('#22: typeof String.prototype["substring"] === "function". Actual: ' + (typeof String.prototype["substring"] ));
+if (typeof String.prototype.toLowerCase !== "function") $ERROR('#23: typeof String.prototype.toLowerCase === "function". Actual: ' + (typeof String.prototype.toLowerCase ));
+if (typeof String.prototype['toLowerCase'] !== "function") $ERROR('#24: typeof String.prototype["toLowerCase"] === "function". Actual: ' + (typeof String.prototype["toLowerCase"] ));
+if (typeof String.prototype.toUpperCase !== "function") $ERROR('#25: typeof String.prototype.toUpperCase === "function". Actual: ' + (typeof String.prototype.toUpperCase ));
+if (typeof String.prototype['toUpperCase'] !== "function") $ERROR('#26: typeof Array.prototype === "object". Actual: ' + (typeof Array.prototype ));
+if (typeof String.prototype.length !== "number") $ERROR('#27: typeof String.prototype.length === "number". Actual: ' + (typeof String.prototype.length ));
+if (typeof String.prototype['length'] !== "number") $ERROR('#28: typeof String.prototype["length"] === "number". Actual: ' + (typeof String.prototype["length"] ));
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T6.js
new file mode 100644
index 000000000..a185905e5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T6.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A4_T6;
+* @section: 11.2.1;
+* @assertion: Check type of various properties;
+* @description: Checking properties of the Boolean object;
+*/
+
+//CHECK#1-8
+if (typeof Boolean.prototype !== "object") $ERROR('#1: typeof Boolean.prototype === "object". Actual: ' + (typeof Boolean.prototype ));
+if (typeof Boolean['prototype'] !== "object") $ERROR('#2: typeof Boolean["prototype"] === "object". Actual: ' + (typeof Boolean["prototype"] ));
+if (typeof Boolean.constructor !== "function") $ERROR('#3: typeof Boolean.constructor === "function". Actual: ' + (typeof Boolean.constructor ));
+if (typeof Boolean['constructor'] !== "function") $ERROR('#4: typeof Boolean["constructor"] === "function". Actual: ' + (typeof Boolean["constructor"] ));
+if (typeof Boolean.prototype.valueOf !== "function") $ERROR('#5: typeof Boolean.prototype.valueOf === "function". Actual: ' + (typeof Boolean.prototype.valueOf ));
+if (typeof Boolean.prototype['valueOf'] !== "function") $ERROR('#6: typeof Boolean.prototype["valueOf"] === "function". Actual: ' + (typeof Boolean.prototype["valueOf"] ));
+if (typeof Boolean.prototype.toString !== "function") $ERROR('#7: typeof Boolean.prototype.toString === "function". Actual: ' + (typeof Boolean.prototype.toString ));
+if (typeof Boolean.prototype['toString'] !== "function") $ERROR('#8: typeof Boolean.prototype["toString"] === "function". Actual: ' + (typeof Boolean.prototype["toString"] ));
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T7.js
new file mode 100644
index 000000000..829323659
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A4_T7;
+* @section: 11.2.1;
+* @assertion: Check type of various properties;
+* @description: Checking properties of the Number object;
+*/
+
+//CHECK#1-16
+if (typeof Number.MAX_VALUE !== "number") $ERROR('#1: typeof Number.MAX_VALUE === "number". Actual: ' + (typeof Number.MAX_VALUE ));
+if (typeof Number['MAX_VALUE'] !== "number") $ERROR('#2: typeof Number["MAX_VALUE"] === "number". Actual: ' + (typeof Number["MAX_VALUE"] ));
+if (typeof Number.MIN_VALUE !== "number") $ERROR('#3: typeof Number.MIN_VALUE === "number". Actual: ' + (typeof Number.MIN_VALUE ));
+if (typeof Number['MIN_VALUE'] !== "number") $ERROR('#4: typeof Number["MIN_VALUE"] === "number". Actual: ' + (typeof Number["MIN_VALUE"] ));
+if (typeof Number.NaN !== "number") $ERROR('#5: typeof Number.NaN === "number". Actual: ' + (typeof Number.NaN ));
+if (typeof Number['NaN'] !== "number") $ERROR('#6: typeof Number["NaN"] === "number". Actual: ' + (typeof Number["NaN"] ));
+if (typeof Number.NEGATIVE_INFINITY !== "number") $ERROR('#7: typeof Number.NEGATIVE_INFINITY === "number". Actual: ' + (typeof Number.NEGATIVE_INFINITY ));
+if (typeof Number['NEGATIVE_INFINITY'] !== "number") $ERROR('#8: typeof Number["NEGATIVE_INFINITY"] === "number". Actual: ' + (typeof Number["NEGATIVE_INFINITY"] ));
+if (typeof Number.POSITIVE_INFINITY !== "number") $ERROR('#9: typeof Number.POSITIVE_INFINITY === "number". Actual: ' + (typeof Number.POSITIVE_INFINITY ));
+if (typeof Number['POSITIVE_INFINITY'] !== "number") $ERROR('#10: typeof Number["POSITIVE_INFINITY"] === "number". Actual: ' + (typeof Number["POSITIVE_INFINITY"] ));
+if (typeof Number.prototype.toString !== "function") $ERROR('#11: typeof Number.prototype.toString === "function". Actual: ' + (typeof Number.prototype.toString ));
+if (typeof Number.prototype['toString'] !== "function") $ERROR('#12: typeof Number.prototype["toString"] === "function". Actual: ' + (typeof Number.prototype["toString"] ));
+if (typeof Number.prototype.constructor !== "function") $ERROR('#13: typeof Number.prototype.constructor === "function". Actual: ' + (typeof Number.prototype.constructor ));
+if (typeof Number.prototype['constructor'] !== "function") $ERROR('#14: typeof Number.prototype["constructor"] === "function". Actual: ' + (typeof Number.prototype["constructor"] ));
+if (typeof Number.prototype.valueOf !== "function") $ERROR('#15: typeof Number.prototype.valueOf === "function". Actual: ' + (typeof Number.prototype.valueOf ));
+if (typeof Number.prototype['valueOf'] !== "function") $ERROR('#16: typeof Number.prototype["valueOf"] === "function". Actual: ' + (typeof Number.prototype["valueOf"] ));
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T8.js
new file mode 100644
index 000000000..f8beae34a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T8.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A4_T8;
+* @section: 11.2.1;
+* @assertion: Check type of various properties;
+* @description: Checking properties of the Math Object;
+*/
+
+//CHECK#1-52
+if (typeof Math.E !== "number") $ERROR('#1: typeof Math.E === "number". Actual: ' + (typeof Math.E ));
+if (typeof Math['E'] !== "number") $ERROR('#2: typeof Math["E"] === "number". Actual: ' + (typeof Math["E"] ));
+if (typeof Math.LN10 !== "number") $ERROR('#3: typeof Math.LN10 === "number". Actual: ' + (typeof Math.LN10 ));
+if (typeof Math['LN10'] !== "number") $ERROR('#4: typeof Math["LN10"] === "number". Actual: ' + (typeof Math["LN10"] ));
+if (typeof Math.LN2 !== "number") $ERROR('#5: typeof Math.LN2 === "number". Actual: ' + (typeof Math.LN2 ));
+if (typeof Math['LN2'] !== "number") $ERROR('#6: typeof Math["LN2"] === "number". Actual: ' + (typeof Math["LN2"] ));
+if (typeof Math.LOG2E !== "number") $ERROR('#7: typeof Math.LOG2E === "number". Actual: ' + (typeof Math.LOG2E ));
+if (typeof Math['LOG2E'] !== "number") $ERROR('#8: typeof Math["LOG2E"] === "number". Actual: ' + (typeof Math["LOG2E"] ));
+if (typeof Math.LOG10E !== "number") $ERROR('#9: typeof Math.LOG10E === "number". Actual: ' + (typeof Math.LOG10E ));
+if (typeof Math['LOG10E'] !== "number") $ERROR('#10: typeof Math["LOG10E"] === "number". Actual: ' + (typeof Math["LOG10E"] ));
+if (typeof Math.PI !== "number") $ERROR('#11: typeof Math.PI === "number". Actual: ' + (typeof Math.PI ));
+if (typeof Math['PI'] !== "number") $ERROR('#12: typeof Math["PI"] === "number". Actual: ' + (typeof Math["PI"] ));
+if (typeof Math.SQRT1_2 !== "number") $ERROR('#13: typeof Math.SQRT1_2 === "number". Actual: ' + (typeof Math.SQRT1_2 ));
+if (typeof Math['SQRT1_2'] !== "number") $ERROR('#14: typeof Math["SQRT1_2"] === "number". Actual: ' + (typeof Math["SQRT1_2"] ));
+if (typeof Math.SQRT2 !== "number") $ERROR('#15: typeof Math.SQRT2 === "number". Actual: ' + (typeof Math.SQRT2 ));
+if (typeof Math['SQRT2'] !== "number") $ERROR('#16: typeof Math["SQRT2"] === "number". Actual: ' + (typeof Math["SQRT2"] ));
+if (typeof Math.abs !== "function") $ERROR('#17: typeof Math.abs === "function". Actual: ' + (typeof Math.abs ));
+if (typeof Math['abs'] !== "function") $ERROR('#18: typeof Math["abs"] === "function". Actual: ' + (typeof Math["abs"] ));
+if (typeof Math.acos !== "function") $ERROR('#19: typeof Math.acos === "function". Actual: ' + (typeof Math.acos ));
+if (typeof Math['acos'] !== "function") $ERROR('#20: typeof Math["acos"] === "function". Actual: ' + (typeof Math["acos"] ));
+if (typeof Math.asin !== "function") $ERROR('#21: typeof Math.asin === "function". Actual: ' + (typeof Math.asin ));
+if (typeof Math['asin'] !== "function") $ERROR('#22: typeof Math["asin"] === "function". Actual: ' + (typeof Math["asin"] ));
+if (typeof Math.atan !== "function") $ERROR('#23: typeof Math.atan === "function". Actual: ' + (typeof Math.atan ));
+if (typeof Math['atan'] !== "function") $ERROR('#24: typeof Math["atan"] === "function". Actual: ' + (typeof Math["atan"] ));
+if (typeof Math.atan2 !== "function") $ERROR('#25: typeof Math.atan2 === "function". Actual: ' + (typeof Math.atan2 ));
+if (typeof Math['atan2'] !== "function") $ERROR('#26: typeof Math["atan2"] === "function". Actual: ' + (typeof Math["atan2"] ));
+if (typeof Math.ceil !== "function") $ERROR('#27: typeof Math.ceil === "function". Actual: ' + (typeof Math.ceil ));
+if (typeof Math['ceil'] !== "function") $ERROR('#28: typeof Math["ceil"] === "function". Actual: ' + (typeof Math["ceil"] ));
+if (typeof Math.cos !== "function") $ERROR('#29: typeof Math.cos === "function". Actual: ' + (typeof Math.cos ));
+if (typeof Math['cos'] !== "function") $ERROR('#30: typeof Math["cos"] === "function". Actual: ' + (typeof Math["cos"] ));
+if (typeof Math.exp !== "function") $ERROR('#31: typeof Math.exp === "function". Actual: ' + (typeof Math.exp ));
+if (typeof Math['exp'] !== "function") $ERROR('#32: typeof Math["exp"] === "function". Actual: ' + (typeof Math["exp"] ));
+if (typeof Math.floor !== "function") $ERROR('#33: typeof Math.floor === "function". Actual: ' + (typeof Math.floor ));
+if (typeof Math['floor'] !== "function") $ERROR('#34: typeof Math["floor"] === "function". Actual: ' + (typeof Math["floor"] ));
+if (typeof Math.log !== "function") $ERROR('#35: typeof Math.log === "function". Actual: ' + (typeof Math.log ));
+if (typeof Math['log'] !== "function") $ERROR('#36: typeof Math["log"] === "function". Actual: ' + (typeof Math["log"] ));
+if (typeof Math.max !== "function") $ERROR('#37: typeof Math.max === "function". Actual: ' + (typeof Math.max ));
+if (typeof Math['max'] !== "function") $ERROR('#38: typeof Math["max"] === "function". Actual: ' + (typeof Math["max"] ));
+if (typeof Math.min !== "function") $ERROR('#39: typeof Math.min === "function". Actual: ' + (typeof Math.min ));
+if (typeof Math['min'] !== "function") $ERROR('#40: typeof Math["min"] === "function". Actual: ' + (typeof Math["min"] ));
+if (typeof Math.pow !== "function") $ERROR('#41: typeof Math.pow === "function". Actual: ' + (typeof Math.pow ));
+if (typeof Math['pow'] !== "function") $ERROR('#42: typeof Math["pow"] === "function". Actual: ' + (typeof Math["pow"] ));
+if (typeof Math.random !== "function") $ERROR('#43: typeof Math.random === "function". Actual: ' + (typeof Math.random ));
+if (typeof Math['random'] !== "function") $ERROR('#44: typeof Math["random"] === "function". Actual: ' + (typeof Math["random"] ));
+if (typeof Math.round !== "function") $ERROR('#45: typeof Math.round === "function". Actual: ' + (typeof Math.round ));
+if (typeof Math['round'] !== "function") $ERROR('#46: typeof Math["round"] === "function". Actual: ' + (typeof Math["round"] ));
+if (typeof Math.sin !== "function") $ERROR('#47: typeof Math.sin === "function". Actual: ' + (typeof Math.sin ));
+if (typeof Math['sin'] !== "function") $ERROR('#48: typeof Math["sin"] === "function". Actual: ' + (typeof Math["sin"] ));
+if (typeof Math.sqrt !== "function") $ERROR('#49: typeof Math.sqrt === "function". Actual: ' + (typeof Math.sqrt ));
+if (typeof Math['sqrt'] !== "function") $ERROR('#50: typeof Math["sqrt"] === "function". Actual: ' + (typeof Math["sqrt"] ));
+if (typeof Math.tan !== "function") $ERROR('#51: typeof Math.tan === "function". Actual: ' + (typeof Math.tan ));
+if (typeof Math['tan'] !== "function") $ERROR('#52: typeof Math["tan"] === "function". Actual: ' + (typeof Math["tan"] ));
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T9.js
new file mode 100644
index 000000000..68130741c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.1_Property_Accessors/S11.2.1_A4_T9.js
@@ -0,0 +1,100 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.1_A4_T9;
+* @section: 11.2.1;
+* @assertion: Check type of various properties;
+* @description: Checking properties of the Date object;
+*/
+
+//CHECK#1-86
+if (typeof Date.parse !== "function") $ERROR('#1: typeof Date.parse === "function". Actual: ' + (typeof Date.parse ));
+if (typeof Date['parse'] !== "function") $ERROR('#2: typeof Date["parse"] === "function". Actual: ' + (typeof Date["parse"] ));
+if (typeof Date.prototype !== "object") $ERROR('#3: typeof Date.prototype === "object". Actual: ' + (typeof Date.prototype ));
+if (typeof Date['prototype'] !== "object") $ERROR('#4: typeof Date["prototype"] === "object". Actual: ' + (typeof Date["prototype"] ));
+if (typeof Date.UTC !== "function") $ERROR('#5: typeof Date.UTC === "function". Actual: ' + (typeof Date.UTC ));
+if (typeof Date['UTC'] !== "function") $ERROR('#6: typeof Date["UTC"] === "function". Actual: ' + (typeof Date["UTC"] ));
+if (typeof Date.prototype.constructor !== "function") $ERROR('#7: typeof Date.prototype.constructor === "funvtion". Actual: ' + (typeof Date.prototype.constructor ));
+if (typeof Date.prototype['constructor'] !== "function") $ERROR('#8: typeof Date.prototype["constructor"] === "function". Actual: ' + (typeof Date.prototype["constructor"] ));
+if (typeof Date.prototype.toString !== "function") $ERROR('#9: typeof Date.prototype.toString === "function". Actual: ' + (typeof Date.prototype.toString ));
+if (typeof Date.prototype['toString'] !== "function") $ERROR('#10: typeof Date.prototype["toString"] === "function". Actual: ' + (typeof Date.prototype["toString"] ));
+if (typeof Date.prototype.valueOf !== "function") $ERROR('#11: typeof Date.prototype.valueOf === "function". Actual: ' + (typeof Date.prototype.valueOf ));
+if (typeof Date.prototype['valueOf'] !== "function") $ERROR('#12: typeof Date.prototype["valueOf"] === "function". Actual: ' + (typeof Date.prototype["valueOf"] ));
+if (typeof Date.prototype.getTime !== "function") $ERROR('#13: typeof Date.prototype.getTime === "function". Actual: ' + (typeof Date.prototype.getTime ));
+if (typeof Date.prototype['getTime'] !== "function") $ERROR('#14: typeof Date.prototype["getTime"] === "function". Actual: ' + (typeof Date.prototype["getTime"] ));
+if (typeof Date.prototype.getYear !== "function") $ERROR('#15: typeof Date.prototype.getYear === "function". Actual: ' + (typeof Date.prototype.getYear ));
+if (typeof Date.prototype['getYear'] !== "function") $ERROR('#16: typeof Date.prototype["getYear"] === "function". Actual: ' + (typeof Date.prototype["getYear"] ));
+if (typeof Date.prototype.getFullYear !== "function") $ERROR('#17: typeof Date.prototype.getFullYear === "function". Actual: ' + (typeof Date.prototype.getFullYear ));
+if (typeof Date.prototype['getFullYear'] !== "function") $ERROR('#18: typeof Date.prototype["getFullYear"] === "function". Actual: ' + (typeof Date.prototype["getFullYear"] ));
+if (typeof Date.prototype.getUTCFullYear !== "function") $ERROR('#19: typeof Date.prototype.getUTCFullYear === "function". Actual: ' + (typeof Date.prototype.getUTCFullYear ));
+if (typeof Date.prototype['getUTCFullYear'] !== "function") $ERROR('#20: typeof Date.prototype["getUTCFullYear"] === "function". Actual: ' + (typeof Date.prototype["getUTCFullYear"] ));
+if (typeof Date.prototype.getMonth !== "function") $ERROR('#21: typeof Date.prototype.getMonth === "function". Actual: ' + (typeof Date.prototype.getMonth ));
+if (typeof Date.prototype['getMonth'] !== "function") $ERROR('#22: typeof Date.prototype["getMonth"] === "function". Actual: ' + (typeof Date.prototype["getMonth"] ));
+if (typeof Date.prototype.getUTCMonth !== "function") $ERROR('#23: typeof Date.prototype.getUTCMonth === "function". Actual: ' + (typeof Date.prototype.getUTCMonth ));
+if (typeof Date.prototype['getUTCMonth'] !== "function") $ERROR('#24: typeof Date.prototype["getUTCMonth"] === "function". Actual: ' + (typeof Date.prototype["getUTCMonth"] ));
+if (typeof Date.prototype.getDate !== "function") $ERROR('#25: typeof Date.prototype.getDate === "function". Actual: ' + (typeof Date.prototype.getDate ));
+if (typeof Date.prototype['getDate'] !== "function") $ERROR('#26: typeof Date.prototype["getDate"] === "function". Actual: ' + (typeof Date.prototype["getDate"] ));
+if (typeof Date.prototype.getUTCDate !== "function") $ERROR('#27: typeof Date.prototype.getUTCDate === "function". Actual: ' + (typeof Date.prototype.getUTCDate ));
+if (typeof Date.prototype['getUTCDate'] !== "function") $ERROR('#28: typeof Date.prototype["getUTCDate"] === "function". Actual: ' + (typeof Date.prototype["getUTCDate"] ));
+if (typeof Date.prototype.getDay !== "function") $ERROR('#29: typeof Date.prototype.getDay === "function". Actual: ' + (typeof Date.prototype.getDay ));
+if (typeof Date.prototype['getDay'] !== "function") $ERROR('#30: typeof Date.prototype["getDay"] === "function". Actual: ' + (typeof Date.prototype["getDay"] ));
+if (typeof Date.prototype.getUTCDay !== "function") $ERROR('#31: typeof Date.prototype.getUTCDay === "function". Actual: ' + (typeof Date.prototype.getUTCDay ));
+if (typeof Date.prototype['getUTCDay'] !== "function") $ERROR('#32: typeof Date.prototype["getUTCDay"] === "function". Actual: ' + (typeof Date.prototype["getUTCDay"] ));
+if (typeof Date.prototype.getHours !== "function") $ERROR('#33: typeof Date.prototype.getHours === "function". Actual: ' + (typeof Date.prototype.getHours ));
+if (typeof Date.prototype['getHours'] !== "function") $ERROR('#34: typeof Date.prototype["getHours"] === "function". Actual: ' + (typeof Date.prototype["getHours"] ));
+if (typeof Date.prototype.getUTCHours !== "function") $ERROR('#35: typeof Date.prototype.getUTCHours === "function". Actual: ' + (typeof Date.prototype.getUTCHours ));
+if (typeof Date.prototype['getUTCHours'] !== "function") $ERROR('#36: typeof Date.prototype["getUTCHours"] === "function". Actual: ' + (typeof Date.prototype["getUTCHours"] ));
+if (typeof Date.prototype.getMinutes !== "function") $ERROR('#37: typeof Date.prototype.getMinutes === "function". Actual: ' + (typeof Date.prototype.getMinutes ));
+if (typeof Date.prototype['getMinutes'] !== "function") $ERROR('#38: typeof Date.prototype["getMinutes"] === "function". Actual: ' + (typeof Date.prototype["getMinutes"] ));
+if (typeof Date.prototype.getUTCMinutes !== "function") $ERROR('#39: typeof Date.prototype.getUTCMinutes === "function". Actual: ' + (typeof Date.prototype.getUTCMinutes ));
+if (typeof Date.prototype['getUTCMinutes'] !== "function") $ERROR('#40: typeof Date.prototype["getUTCMinutes"] === "function". Actual: ' + (typeof Date.prototype["getUTCMinutes"] ));
+if (typeof Date.prototype.getSeconds !== "function") $ERROR('#41: typeof Date.prototype.getSeconds === "function". Actual: ' + (typeof Date.prototype.getSeconds ));
+if (typeof Date.prototype['getSeconds'] !== "function") $ERROR('#42: typeof Date.prototype["getSeconds"] === "function". Actual: ' + (typeof Date.prototype["getSeconds"] ));
+if (typeof Date.prototype.getUTCSeconds !== "function") $ERROR('#43: typeof Date.prototype.getUTCSeconds === "function". Actual: ' + (typeof Date.prototype.getUTCSeconds ));
+if (typeof Date.prototype['getUTCSeconds'] !== "function") $ERROR('#44: typeof Date.prototype["getUTCSeconds"] === "function". Actual: ' + (typeof Date.prototype["getUTCSeconds"] ));
+if (typeof Date.prototype.getMilliseconds !== "function") $ERROR('#45: typeof Date.prototype.getMilliseconds === "function". Actual: ' + (typeof Date.prototype.getMilliseconds ));
+if (typeof Date.prototype['getMilliseconds'] !== "function") $ERROR('#46: typeof Date.prototype["getMilliseconds"] === "function". Actual: ' + (typeof Date.prototype["getMilliseconds"] ));
+if (typeof Date.prototype.getUTCMilliseconds !== "function") $ERROR('#47: typeof Date.prototype.getUTCMilliseconds === "function". Actual: ' + (typeof Date.prototype.getUTCMilliseconds ));
+if (typeof Date.prototype['getUTCMilliseconds'] !== "function") $ERROR('#48: typeof Date.prototype["getUTCMilliseconds"] === "function". Actual: ' + (typeof Date.prototype["getUTCMilliseconds"] ));
+if (typeof Date.prototype.setTime !== "function") $ERROR('#49: typeof Date.prototype.setTime === "function". Actual: ' + (typeof Date.prototype.setTime ));
+if (typeof Date.prototype['setTime'] !== "function") $ERROR('#50: typeof Date.prototype["setTime"] === "function". Actual: ' + (typeof Date.prototype["setTime"] ));
+if (typeof Date.prototype.setMilliseconds !== "function") $ERROR('#51: typeof Date.prototype.setMilliseconds === "function". Actual: ' + (typeof Date.prototype.setMilliseconds ));
+if (typeof Date.prototype['setMilliseconds'] !== "function") $ERROR('#52: typeof Date.prototype["setMilliseconds"] === "function". Actual: ' + (typeof Date.prototype["setMilliseconds"] ));
+if (typeof Date.prototype.setUTCMilliseconds !== "function") $ERROR('#53: typeof Date.prototype.setUTCMilliseconds === "function". Actual: ' + (typeof Date.prototype.setUTCMilliseconds ));
+if (typeof Date.prototype['setUTCMilliseconds'] !== "function") $ERROR('#54: typeof Date.prototype["setUTCMilliseconds"] === "function". Actual: ' + (typeof Date.prototype["setUTCMilliseconds"] ));
+if (typeof Date.prototype.setSeconds !== "function") $ERROR('#55: typeof Date.prototype.setSeconds === "function". Actual: ' + (typeof Date.prototype.setSeconds ));
+if (typeof Date.prototype['setSeconds'] !== "function") $ERROR('#56: typeof Date.prototype["setSeconds"] === "function". Actual: ' + (typeof Date.prototype["setSeconds"] ));
+if (typeof Date.prototype.setUTCSeconds !== "function") $ERROR('#57: typeof Date.prototype.setUTCSeconds === "function". Actual: ' + (typeof Date.prototype.setUTCSeconds ));
+if (typeof Date.prototype['setUTCSeconds'] !== "function") $ERROR('#58: typeof Date.prototype["setUTCSeconds"] === "function". Actual: ' + (typeof Date.prototype["setUTCSeconds"] ));
+if (typeof Date.prototype.setMinutes !== "function") $ERROR('#59: typeof Date.prototype.setMinutes === "function". Actual: ' + (typeof Date.prototype.setMinutes ));
+if (typeof Date.prototype['setMinutes'] !== "function") $ERROR('#60: typeof Date.prototype["setMinutes"] === "function". Actual: ' + (typeof Date.prototype["setMinutes"] ));
+if (typeof Date.prototype.setUTCMinutes !== "function") $ERROR('#61: typeof Date.prototype.setUTCMinutes === "function". Actual: ' + (typeof Date.prototype.setUTCMinutes ));
+if (typeof Date.prototype['setUTCMinutes'] !== "function") $ERROR('#62: typeof Date.prototype["setUTCMinutes"] === "function". Actual: ' + (typeof Date.prototype["setUTCMinutes"] ));
+if (typeof Date.prototype.setHours !== "function") $ERROR('#63: typeof Date.prototype.setHours === "function". Actual: ' + (typeof Date.prototype.setHours ));
+if (typeof Date.prototype['setHours'] !== "function") $ERROR('#64: typeof Date.prototype["setHours"] === "function". Actual: ' + (typeof Date.prototype["setHours"] ));
+if (typeof Date.prototype.setUTCHours !== "function") $ERROR('#65: typeof Date.prototype.setUTCHours === "function". Actual: ' + (typeof Date.prototype.setUTCHours ));
+if (typeof Date.prototype['setUTCHours'] !== "function") $ERROR('#66: typeof Date.prototype["setUTCHours"] === "function". Actual: ' + (typeof Date.prototype["setUTCHours"] ));
+if (typeof Date.prototype.setDate !== "function") $ERROR('#67: typeof Date.prototype.setDate === "function". Actual: ' + (typeof Date.prototype.setDate ));
+if (typeof Date.prototype['setDate'] !== "function") $ERROR('#68: typeof Date.prototype["setDate"] === "function". Actual: ' + (typeof Date.prototype["setDate"] ));
+if (typeof Date.prototype.setUTCDate !== "function") $ERROR('#69: typeof Date.prototype.setUTCDate === "function". Actual: ' + (typeof Date.prototype.setUTCDate ));
+if (typeof Date.prototype['setUTCDate'] !== "function") $ERROR('#70: typeof Date.prototype["setUTCDate"] === "function". Actual: ' + (typeof Date.prototype["setUTCDate"] ));
+if (typeof Date.prototype.setMonth !== "function") $ERROR('#71: typeof Date.prototype.setMonth === "function". Actual: ' + (typeof Date.prototype.setMonth ));
+if (typeof Date.prototype['setMonth'] !== "function") $ERROR('#72: typeof Date.prototype["setMonth"] === "function". Actual: ' + (typeof Date.prototype["setMonth"] ));
+if (typeof Date.prototype.setUTCMonth !== "function") $ERROR('#73: typeof Date.prototype.setUTCMonth === "function". Actual: ' + (typeof Date.prototype.setUTCMonth ));
+if (typeof Date.prototype['setUTCMonth'] !== "function") $ERROR('#74: typeof Date.prototype["setUTCMonth"] === "function". Actual: ' + (typeof Date.prototype["setUTCMonth"] ));
+if (typeof Date.prototype.setFullYear !== "function") $ERROR('#75: typeof Date.prototype.setFullYear === "function". Actual: ' + (typeof Date.prototype.setFullYear ));
+if (typeof Date.prototype['setFullYear'] !== "function") $ERROR('#76: typeof Date.prototype["setFullYear"] === "function". Actual: ' + (typeof Date.prototype["setFullYear"] ));
+if (typeof Date.prototype.setUTCFullYear !== "function") $ERROR('#77: typeof Date.prototype.setUTCFullYear === "function". Actual: ' + (typeof Date.prototype.setUTCFullYear ));
+if (typeof Date.prototype['setUTCFullYear'] !== "function") $ERROR('#78: typeof Date.prototype["setUTCFullYear"] === "function". Actual: ' + (typeof Date.prototype["setUTCFullYear"] ));
+if (typeof Date.prototype.setYear !== "function") $ERROR('#79: typeof Date.prototype.setYear === "function". Actual: ' + (typeof Date.prototype.setYear ));
+if (typeof Date.prototype['setYear'] !== "function") $ERROR('#80: typeof Date.prototype["setYear"] === "function". Actual: ' + (typeof Date.prototype["setYear"] ));
+if (typeof Date.prototype.toLocaleString !== "function") $ERROR('#81: typeof Date.prototype.toLocaleString === "function". Actual: ' + (typeof Date.prototype.toLocaleString ));
+if (typeof Date.prototype['toLocaleString'] !== "function") $ERROR('#82: typeof Date.prototype["toLocaleString"] === "function". Actual: ' + (typeof Date.prototype["toLocaleString"] ));
+if (typeof Date.prototype.toUTCString !== "function") $ERROR('#83: typeof Date.prototype.toUTCString === "function". Actual: ' + (typeof Date.prototype.toUTCString ));
+if (typeof Date.prototype['toUTCString'] !== "function") $ERROR('#84: typeof Date.prototype["toUTCString"] === "function". Actual: ' + (typeof Date.prototype["toUTCString"] ));
+if (typeof Date.prototype.toGMTString !== "function") $ERROR('#85: typeof Date.prototype.toGMTString === "function". Actual: ' + (typeof Date.prototype.toGMTString ));
+if (typeof Date.prototype['toGMTString'] !== "function") $ERROR('#86: typeof Date.prototype["toGMTString"] === "function". Actual: ' + (typeof Date.prototype["toGMTString"] ));
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A1.1.js
new file mode 100644
index 000000000..c91374b44
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A1.1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A1.1;
+* @section: 11.2.2, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between "new" and NewExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("new\u0009Number") != 0) {
+ $ERROR('#1: new\\u0009Number == 0');
+}
+
+//CHECK#2
+if (eval("new\u000BNumber") != 0) {
+ $ERROR('#2: new\\u000BNumber == 0');
+}
+
+//CHECK#3
+if (eval("new\u000CNumber") != 0) {
+ $ERROR('#3: new\\u000CNumber == 0');
+}
+
+//CHECK#4
+if (eval("new\u0020Number") != 0) {
+ $ERROR('#4: new\\u0020Number == 0');
+}
+
+//CHECK#5
+if (eval("new\u00A0Number") != 0) {
+ $ERROR('#5: new\\u00A0Number == 0');
+}
+
+//CHECK#6
+if (eval("new\u000ANumber") != 0) {
+ $ERROR('#6: new\\u000ANumber == 0');
+}
+
+//CHECK#7
+if (eval("new\u000DNumber") != 0) {
+ $ERROR('#7: new\\u000DNumber == 0');
+}
+
+//CHECK#8
+if (eval("new\u2028Number") != 0) {
+ $ERROR('#8: new\\u2028Number == 0');
+}
+
+//CHECK#9
+if (eval("new\u2029Number") != 0) {
+ $ERROR('#9: new\\u2029Number == 0');
+}
+
+//CHECK#10
+if (eval("new\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029Number") != 0) {
+ $ERROR('#10: new\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029Number == 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A1.2.js
new file mode 100644
index 000000000..f8490a143
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A1.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A1.2;
+* @section: 11.2.2, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between "new" and MemberExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("new\u0009Number()") != 0) {
+ $ERROR('#1: new\\u0009Number == 0');
+}
+
+//CHECK#2
+if (eval("new\u000BNumber()") != 0) {
+ $ERROR('#2: new\\u000BNumber == 0');
+}
+
+//CHECK#3
+if (eval("new\u000CNumber()") != 0) {
+ $ERROR('#3: new\\u000CNumber == 0');
+}
+
+//CHECK#4
+if (eval("new\u0020Number()") != 0) {
+ $ERROR('#4: new\\u0020Number == 0');
+}
+
+//CHECK#5
+if (eval("new\u00A0Number()") != 0) {
+ $ERROR('#5: new\\u00A0Number == 0');
+}
+
+//CHECK#6
+if (eval("new\u000ANumber()") != 0) {
+ $ERROR('#6: new\\u000ANumber == 0');
+}
+
+//CHECK#7
+if (eval("new\u000DNumber()") != 0) {
+ $ERROR('#7: new\\u000DNumber == 0');
+}
+
+//CHECK#8
+if (eval("new\u2028Number()") != 0) {
+ $ERROR('#8: new\\u2028Number == 0');
+}
+
+//CHECK#9
+if (eval("new\u2029Number()") != 0) {
+ $ERROR('#9: new\\u2029Number == 0');
+}
+
+//CHECK#10
+if (eval("new\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029Number()") != 0) {
+ $ERROR('#10: new\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029Number == 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A2.js
new file mode 100644
index 000000000..29a859fe8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A2;
+* @section: 11.2.2;
+* @assertion: Operator "new" uses GetValue;
+* @description: If GetBase(NewExpression) or GetBase(MemberExpression) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ new x;
+ $ERROR('#1.1: new x throw ReferenceError. Actual: ' + (new x));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: new x throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ new x();
+ $ERROR('#2: new x() throw ReferenceError');
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#2: new x() throw ReferenceError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T1.js
new file mode 100644
index 000000000..b68d612e3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T1.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A3_T1;
+* @section: 11.2.2;
+* @assertion: If Type(NewExpression) or Type(MemberExpression) is not Object, throw TypeError;
+* @description: Checking boolean primitive case;
+*/
+
+//CHECK#1
+try {
+ new true;
+ $ERROR('#1: new true throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: new true throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ var x = true;
+ new x;
+ $ERROR('#2: var x = true; new x throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: var x = true; new x throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ var x = true;
+ new x();
+ $ERROR('#3: var x = true; new x() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#3: var x = true; new x() throw TypeError');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T2.js
new file mode 100644
index 000000000..ec0af6515
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T2.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A3_T2;
+* @section: 11.2.2;
+* @assertion: If Type(NewExpression) or Type(MemberExpression) is not Object, throw TypeError;
+* @description: Checking "number primitive" case;
+*/
+
+//CHECK#1
+try {
+ new 1;
+ $ERROR('#1: new 1 throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: new 1 throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ var x = 1;
+ new x;
+ $ERROR('#2: var x = 1; new x throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: var x = 1; new x throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ var x = 1;
+ new x();
+ $ERROR('#3: var x = 1; new x() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#3: var x = 1; new x() throw TypeError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T3.js
new file mode 100644
index 000000000..a1329b9e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T3.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A3_T3;
+* @section: 11.2.2;
+* @assertion: If Type(NewExpression) or Type(MemberExpression) is not Object, throw TypeError;
+* @description: Checking "string primitive" case;
+*/
+
+//CHECK#1
+try {
+ new 1;
+ $ERROR('#1: new "1" throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: new "1" throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ var x = "1";
+ new x;
+ $ERROR('#2: var x = "1"; new x throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: var x = "1"; new x throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ var x = "1";
+ new x();
+ $ERROR('#3: var x = "1"; new x() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#3: var x = "1"; new x() throw TypeError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T4.js
new file mode 100644
index 000000000..d52006ebf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T4.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A3_T4;
+* @section: 11.2.2;
+* @assertion: If Type(NewExpression) or Type(MemberExpression) is not Object, throw TypeError;
+* @description: Checking "undefined" case;
+*/
+
+//CHECK#1
+try {
+ new undefined;
+ $ERROR('#1: new undefined throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: new undefined throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ var x = undefined;
+ new x;
+ $ERROR('#2: var x = undefined; new x throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: var x = undefined; new x throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ var x = undefined;
+ new x();
+ $ERROR('#3: var x = undefined; new x() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#3: var x = undefined; new x() throw TypeError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T5.js
new file mode 100644
index 000000000..e3dd64090
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A3_T5.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A3_T5;
+* @section: 11.2.2;
+* @assertion: If Type(NewExpression) or Type(MemberExpression) is not Object, throw TypeError;
+* @description: Checking "null primitive" case;
+*/
+
+//CHECK#1
+try {
+ new null;
+ $ERROR('#1: new null throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: new null throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ var x = null;
+ new x;
+ $ERROR('#2: var x = null; new x throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: var x = null; new x throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ var x = null;
+ new x();
+ $ERROR('#3: var x = null; new x() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#3: var x = null; new x() throw TypeError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T1.js
new file mode 100644
index 000000000..0cc744c6f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T1.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A4_T1;
+* @section: 11.2.2;
+* @assertion: If NewExpression or MemberExpression does not implement internal [[Construct]] method, throw TypeError;
+* @description: Checking Boolean object case;
+*/
+
+//CHECK#1
+try {
+ new new Boolean(true);
+ $ERROR('#1: new new Boolean(true) throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: new new Boolean(true) throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ var x = new Boolean(true);
+ new x;
+ $ERROR('#2: var x = new Boolean(true); new x throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: var x = new Boolean(true); new x throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ var x = new Boolean(true);
+ new x();
+ $ERROR('#3: var x = new Boolean(true); new x() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#3: var x = new Boolean(true); new x() throw TypeError');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T2.js
new file mode 100644
index 000000000..6ff4f5319
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T2.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A4_T2;
+* @section: 11.2.2;
+* @assertion: If NewExpression or MemberExpression does not implement internal [[Construct]] method, throw TypeError;
+* @description: Checking Number object case;
+*/
+
+//CHECK#1
+try {
+ new new Number(1);
+ $ERROR('#1: new new Number(1) throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: new new Number(1) throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ var x = new Number(1);
+ new x;
+ $ERROR('#2: var x = new Number(1); new x throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: var x = new Number(1); new x throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ var x = new Number(1);
+ new x();
+ $ERROR('#3: var x = new Number(1); new x() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#3: var x = new Number(1); new x() throw TypeError');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T3.js
new file mode 100644
index 000000000..5c79e5ead
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T3.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A4_T3;
+* @section: 11.2.2;
+* @assertion: If NewExpression or MemberExpression does not implement internal [[Construct]] method, throw TypeError;
+* @description: Checking String object case;
+*/
+
+//CHECK#1
+try {
+ new new String("1");
+ $ERROR('#1: new new String("1") throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: new new String("1") throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ var x = new String("1");
+ new x;
+ $ERROR('#2: var x = new String("1"); new x throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: var x = new String("1"); new x throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ var x = new String("1");
+ new x();
+ $ERROR('#3: var x = new String("1"); new x() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#3: var x = new String("1"); new x() throw TypeError');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T4.js
new file mode 100644
index 000000000..21a066a86
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T4.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A4_T4;
+* @section: 11.2.2;
+* @assertion: If NewExpression or MemberExpression does not implement internal [[Construct]] method, throw TypeError;
+* @description: Checking Global object case;
+*/
+
+//CHECK#1
+try {
+ new this;
+ $ERROR('#1: new this throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: new this throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ new this();
+ $ERROR('#2: new this() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: new this() throw TypeError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T5.js
new file mode 100644
index 000000000..11ef6f01d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.2_The_new_Operator/S11.2.2_A4_T5.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.2_A4_T5;
+* @section: 11.2.2;
+* @assertion: If NewExpression or MemberExpression does not implement internal [[Construct]] method, throw TypeError;
+* @description: Checking Math object case;
+*/
+
+//CHECK#1
+try {
+ new Math;
+ $ERROR('#1: new Math throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: new Math throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ new new Math();
+ $ERROR('#2: new new Math() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: new new Math() throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ var x = new Math();
+ new x();
+ $ERROR('#3: var x = new Math(); new x() throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#3: var x = new Math(); new x() throw TypeError');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A1.js
new file mode 100644
index 000000000..a6dfa4f63
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A1;
+* @section: 11.2.3, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between MemberExpression and Arguments are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("Number\u0009()") !== 0) {
+ $ERROR('#1: Number\\u0009() === 0');
+}
+
+//CHECK#2
+if (eval("Number\u000B()") !== 0) {
+ $ERROR('#2: Number\\u000B() === 0');
+}
+
+//CHECK#3
+if (eval("Number\u000C()") !== 0) {
+ $ERROR('#3: Number\\u000C() === 0');
+}
+
+//CHECK#4
+if (eval("Number\u0020()") !== 0) {
+ $ERROR('#4: Number\\u0020 === 0');
+}
+
+//CHECK#5
+if (eval("Number\u00A0()") !== 0) {
+ $ERROR('#5: Number\\u00A0() === 0');
+}
+
+//CHECK#6
+if (eval("Number\u000A()") !== 0) {
+ $ERROR('#6: Number\\u000A() === 0');
+}
+
+//CHECK#7
+if (eval("Number\u000D()") !== 0) {
+ $ERROR('#7: Number\\u000D() === 0');
+}
+
+//CHECK#8
+if (eval("Number\u2028()") !== 0) {
+ $ERROR('#8: Number\\u2028() === 0');
+}
+
+//CHECK#9
+if (eval("Number\u2029()") !== 0) {
+ $ERROR('#9: Number\\u2029() === 0');
+}
+
+//CHECK#10
+if (eval("Number\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029()") !== 0) {
+ $ERROR('#10: Number\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029() === 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A2.js
new file mode 100644
index 000000000..632cda30c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A2;
+* @section: 11.2.3;
+* @assertion: CallExpression : MemberExpression Arguments uses GetValue;
+* @description: If GetBase(MemberExpression) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x();
+ $ERROR('#1.1: x() throw ReferenceError. Actual: ' + (x()));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x() throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ x(1,2,3);
+ $ERROR('#2.1: x(1,2,3) throw ReferenceError. Actual: ' + (x(1,2,3)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#2.2: x(1,2,3) throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T1.js
new file mode 100644
index 000000000..57a5291cc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T1.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A3_T1;
+* @section: 11.2.3;
+* @assertion: If MemberExpression is not Object, throw TypeError;
+* @description: Checking "boolean primitive" case;
+*/
+
+//CHECK#1
+try {
+ true();
+ $ERROR('#1.1: true() throw TypeError. Actual: ' + (true()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: true() throw TypeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ var x = true;
+ x();
+ $ERROR('#2.1: var x = true; x() throw TypeError. Actual: ' + (x()))
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: var x = true; x() throw TypeError. Actual: ' + (e))
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T2.js
new file mode 100644
index 000000000..b8f9d2c5e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A3_T2;
+* @section: 11.2.3;
+* @assertion: If MemberExpression is not Object, throw TypeError;
+* @description: Checking "number primitive" case;
+*/
+
+//CHECK#1
+try {
+ 1();
+ $ERROR('#1.1: 1() throw TypeError. Actual: ' + (1()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: 1() throw TypeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ var x = 1;
+ x();
+ $ERROR('#2.1: var x = 1; x() throw TypeError. Actual: ' + (x()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: var x = 1; x() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T3.js
new file mode 100644
index 000000000..7f31df4d0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T3.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A3_T3;
+* @section: 11.2.3;
+* @assertion: If MemberExpression is not Object, throw TypeError;
+* @description: Checking "string primitive" case;
+*/
+
+//CHECK#1
+try {
+ "1"();
+ $ERROR('#1.1: "1"() throw TypeError. Actual: ' + ("1"()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: "1"() throw TypeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ var x = "1";
+ x();
+ $ERROR('#2.1: var x = "1"; x() throw TypeError. Actual: ' + (x()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: var x = "1"; x() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T4.js
new file mode 100644
index 000000000..eb392bc32
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T4.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A3_T4;
+* @section: 11.2.3;
+* @assertion: If MemberExpression is not Object, throw TypeError;
+* @description: Checking "undefined" case;
+*/
+
+//CHECK#1
+try {
+ undefined();
+ $ERROR('#1.1: undefined() throw TypeError. Actual: ' + (e));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: undefined() throw TypeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ var x = undefined;
+ x();
+ $ERROR('#2.1: var x = undefined; x() throw TypeError. Actual: ' + (e));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: var x = undefined; x() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T5.js
new file mode 100644
index 000000000..e281e2c52
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A3_T5.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A3_T5;
+* @section: 11.2.3;
+* @assertion: If MemberExpression is not Object, throw TypeError;
+* @description: Checking "null" case;
+*/
+
+//CHECK#1
+try {
+ null();
+ $ERROR('#1.1: null() throw TypeError. Actual: ' + (null()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: null() throw TypeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ var x = null;
+ x();
+ $ERROR('#2.1: var x = null; x() throw TypeError. Actual: ' + (x()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: var x = null; x() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T1.js
new file mode 100644
index 000000000..3d6889da2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T1.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A4_T1;
+* @section: 11.2.3;
+* @assertion: If MemberExpression does not implement the internal [[Call]] method, throw TypeError;
+* @description: Checking Boolean object case;
+*/
+
+//CHECK#1
+try {
+ new Boolean(true)();
+ $ERROR('#1.1: new Boolean(true)() throw TypeError. Actual: ' + (new Boolean(true)()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new Boolean(true)() throw TypeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ var x = new Boolean(true);
+ x();
+ $ERROR('#2.1: var x = new Boolean(true); x() throw TypeError. Actual: ' + (x()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: var x = new Boolean(true); x() throw TypeError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T2.js
new file mode 100644
index 000000000..3daf4be0f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T2.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A4_T2;
+* @section: 11.2.3;
+* @assertion: If MemberExpression does not implement the internal [[Call]] method, throw TypeError;
+* @description: Checking Number object case;
+*/
+
+//CHECK#1
+try {
+ new Number(1)();
+ $ERROR('#1.1: new Number(1)() throw TypeError. Actual: ' + (new Number(1)()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new Number(1)() throw TypeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ var x = new Number(1);
+ x();
+ $ERROR('#2.1: var x = new Number(1); x() throw TypeError. Actual: ' + (x()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: var x = new Number(1); x() throw TypeError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T3.js
new file mode 100644
index 000000000..240d913eb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T3.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A4_T3;
+* @section: 11.2.3;
+* @assertion: If MemberExpression does not implement the internal [[Call]] method, throw TypeError;
+* @description: Checking String object case;
+*/
+
+//CHECK#1
+try {
+ new String("1")();
+ $ERROR('#1.1: new String("1")() throw TypeError. Actual: ' + (new String("1")()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: new String("1")() throw TypeError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+try {
+ var x = new String("1");
+ x();
+ $ERROR('#2.1: var x = new String("1"); x() throw TypeError. Actual: ' + (x()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2.2: var x = new String("1"); x() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T4.js
new file mode 100644
index 000000000..65e142b1a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T4.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A4_T4;
+* @section: 11.2.3;
+* @assertion: If MemberExpression does not implement the internal [[Call]] method, throw TypeError;
+* @description: Checking Global object case;
+*/
+
+//CHECK#1
+try {
+ this();
+ $ERROR('#1.1: this() throw TypeError. Actual: ' + (this()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: this() throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T5.js
new file mode 100644
index 000000000..96effc8e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.3_Function_Calls/S11.2.3_A4_T5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.3_A4_T5;
+* @section: 11.2.3;
+* @assertion: If MemberExpression does not implement the internal [[Call]] method, throw TypeError;
+* @description: Checking Math object case;
+*/
+
+//CHECK#1
+try {
+ Math();
+ $ERROR('#1.1: Math() throw TypeError. Actual: ' + (Math()));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1.2: Math() throw TypeError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.1_T1.js
new file mode 100644
index 000000000..f1cffef9e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.1_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.4_A1.1_T1;
+* @section: 11.2.4, 11.2.3, 10.1.8;
+* @assertion: Arguments : ();
+* @description: Function is declared with no FormalParameterList;
+*/
+
+function f_arg() {
+ return arguments;
+}
+
+//CHECK#1
+if (f_arg().length !== 0) {
+ $ERROR('#1: function f_arg() {return arguments;} f_arg().length === 0. Actual: ' + (f_arg().length));
+}
+
+//CHECK#2
+if (f_arg()[0] !== undefined) {
+ $ERROR('#2: function f_arg() {return arguments;} f_arg()[0] === undefined. Actual: ' + (f_arg()[0]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.1_T2.js
new file mode 100644
index 000000000..03e2fd0fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.1_T2.js
@@ -0,0 +1,28 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.4_A1.1_T2;
+* @section: 11.2.4, 11.2.3, 10.1.8;
+* @assertion: Arguments : ();
+* @description: Function is declared with FormalParameterList;
+*/
+
+function f_arg(x,y) {
+ return arguments;
+}
+
+//CHECK#1
+if (f_arg().length !== 0) {
+ $ERROR('#1: function f_arg(x,y) {return arguments;} f_arg().length === 0. Actual: ' + (f_arg().length));
+}
+
+//CHECK#2
+if (f_arg()[0] !== undefined) {
+ $ERROR('#2: function f_arg(x,y) {return arguments;} f_arg()[0] === undefined. Actual: ' + (f_arg()[0]));
+}
+
+//CHECK#3
+if (f_arg.length !== 2) {
+ $ERROR('#3: function f_arg(x,y) {return arguments;} f_arg.length === 2. Actual: ' + (f_arg.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.2_T1.js
new file mode 100644
index 000000000..f4417f376
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.2_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.4_A1.2_T1;
+* @section: 11.2.4, 11.2.3, 10.1.8;
+* @assertion: Arguments : (ArgumentList);
+* @description: Function is declared with no FormalParameterList;
+*/
+
+f_arg = function() {
+ return arguments;
+}
+
+//CHECK#1
+if (f_arg(1,2,3).length !== 3) {
+ $ERROR('#1: f_arg = function()() {return arguments;} f_arg(1,2,3).length === 3. Actual: ' + (f_arg(1,2,3).length));
+}
+
+//CHECK#2
+if (f_arg(1,2,3)[0] !== 1) {
+ $ERROR('#1: f_arg = function()() {return arguments;} f_arg(1,2,3)[0] === 1. Actual: ' + (f_arg(1,2,3)[0]));
+}
+
+//CHECK#3
+if (f_arg(1,2,3)[1] !== 2) {
+ $ERROR('#3: f_arg = function()() {return arguments;} f_arg(1,2,3)[1] === 2. Actual: ' + (f_arg(1,2,3)[1]));
+}
+
+//CHECK#4
+if (f_arg(1,2,3)[2] !== 3) {
+ $ERROR('#4: f_arg = function()() {return arguments;} f_arg(1,2,3)[2] === 3. Actual: ' + (f_arg(1,2,3)[2]));
+}
+
+//CHECK#5
+if (f_arg(1,2,3)[3] !== undefined) {
+ $ERROR('#5: f_arg = function()() {return arguments;} f_arg(1,2,3)[3] === undefined. Actual: ' + (f_arg(1,2,3)[3]));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.2_T2.js
new file mode 100644
index 000000000..ed9b24b23
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.2_T2.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.4_A1.2_T2;
+* @section: 11.2.4, 11.2.3, 10.1.8;
+* @assertion: Arguments : (ArgumentList);
+* @description: Function is declared with FormalParameterList;
+*/
+
+f_arg = function(x,y) {
+ return arguments;
+}
+
+//CHECK#1
+if (f_arg(1,2,3).length !== 3) {
+ $ERROR('#1: f_arg = function(x,y) {return arguments;} f_arg(1,2,3).length === 3. Actual: ' + (f_arg(1,2,3).length));
+}
+
+//CHECK#2
+if (f_arg(1)[0] !== 1) {
+ $ERROR('#1: f_arg = function(x,y) {return arguments;} f_arg(1)[0] === 1. Actual: ' + (f_arg(1)[0]));
+}
+
+//CHECK#3
+if (f_arg(1,2)[1] !== 2) {
+ $ERROR('#3: f_arg = function(x,y) {return arguments;} f_arg(1,2)[1] === 2. Actual: ' + (f_arg(1,2)[1]));
+}
+
+//CHECK#4
+if (f_arg(1,2,3)[2] !== 3) {
+ $ERROR('#4: f_arg = function(x,y) {return arguments;} f_arg(1,2,3)[2] === 3. Actual: ' + (f_arg(1,2,3)[2]));
+}
+
+//CHECK#5
+if (f_arg(1,2,3)[3] !== undefined) {
+ $ERROR('#5: f_arg = function(x,y) {return arguments;} f_arg(1,2,3)[3] === undefined. Actual: ' + (f_arg(1,2,3)[3]));
+}
+
+//CHECK#6
+if (f_arg.length !== 2) {
+ $ERROR('#6: f_arg = function(x,y) {return arguments;} f_arg.length === 2. Actual: ' + (f_arg.length));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.3_T1.js
new file mode 100644
index 000000000..917854f14
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.3_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.4_A1.3_T1;
+* @section: 11.2.4, 11.2.3, 10.1.8;
+* @assertion: Arguments : (ArgumentList : ArgumentList,, AssignmentExpression) is a bad syntax;
+* @description: incorrect syntax;
+* @negative;
+*/
+
+function f_arg() {
+}
+
+f_arg(1,,2);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T1.js
new file mode 100644
index 000000000..c281410b4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T1.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.4_A1.4_T1;
+* @section: 11.2.4, 11.2.3, 10.1.8;
+* @assertion: Arguments : (ArgumentList : ArgumentList, AssignmentExpression);
+* @description: Return an internal list whose length is one greater than the
+* length of ArgumentList and whose items are the items of ArgumentList, in order,
+* followed at the end by GetValue(AssignmentExpression), which is the last item of
+* the new list;
+*/
+
+function f_arg() {
+}
+
+//CHECK#1
+f_arg(x=1,x);
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T2.js
new file mode 100644
index 000000000..76b6b41f9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.4_A1.4_T2;
+* @section: 11.2.4, 11.2.3, 10.1.8;
+* @assertion: Arguments : (ArgumentList : ArgumentList, AssignmentExpression);
+* @description: Return an internal list whose length is one greater than the
+* length of ArgumentList and whose items are the items of ArgumentList, in order,
+* followed at the end by GetValue(AssignmentExpression), which is the last item of
+* the new list;
+*/
+
+function f_arg() {
+}
+
+//CHECK#1
+try {
+ f_arg(x,x=1);
+ $ERROR('#1.1: function f_arg() {} f_arg(x,x=1) throw ReferenceError. Actual: ' + (f_arg(x,x=1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: function f_arg() {} f_arg(x,x=1) throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T3.js
new file mode 100644
index 000000000..b435bf36f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.4_A1.4_T3;
+* @section: 11.2.4, 11.2.3, 10.1.8;
+* @assertion: Arguments : (ArgumentList : ArgumentList, AssignmentExpression);
+* @description: Return an internal list whose length is one greater than the
+* length of ArgumentList and whose items are the items of ArgumentList, in order,
+* followed at the end by GetValue(AssignmentExpression), which is the last item of
+* the new list;
+*/
+
+function f_arg(x,y,z) {
+ return z;
+}
+
+//CHECK#1
+if (f_arg(x=1,y=x,x+y) !== 2) {
+ $ERROR('#1: function f_arg(x,y,z) {return z;} f_arg(x=1,y=x,x+y) === 2. Actual: ' + (f_arg(x=1,y=x,x+y)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T4.js
new file mode 100644
index 000000000..ed47b4dbd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.2_Left_Hand_Side_Expressions/11.2.4_Argument_Lists/S11.2.4_A1.4_T4.js
@@ -0,0 +1,33 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.2.4_A1.4_T4;
+* @section: 11.2.4, 11.2.3, 10.1.8;
+* @assertion: Arguments : (ArgumentList : ArgumentList, AssignmentExpression);
+* @description: Return an internal list whose length is one greater than the
+* length of ArgumentList and whose items are the items of ArgumentList, in order,
+* followed at the end by GetValue(AssignmentExpression), which is the last item of
+* the new list;
+*/
+
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+
+function f_arg() {
+}
+
+//CHECK#1
+try {
+ f_arg(x(),y());
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; function f_arg() {} f_arg(x(),y()) throw "x". Actual: ' + (f_arg(x(),y())));
+}
+catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First argument is evaluated first, and then second argument');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; function f_arg() {} f_arg(x(),y()) throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T1.js
new file mode 100644
index 000000000..61ad35814
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A1.1_T1;
+* @section: 11.3.1, 11.6.3, 7.3;
+* @assertion: Line Terminator between LeftHandSideExpression and "++" is not allowed;
+* @description: Checking Line Feed;
+* @negative
+*/
+
+//CHECK#1
+eval("var x = 1; x\u000A++");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T2.js
new file mode 100644
index 000000000..3d410bdba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A1.1_T2;
+* @section: 11.3.1, 11.6.3, 7.3;
+* @assertion: Line Terminator between LeftHandSideExpression and "++" is not allowed;
+* @description: Carriage Return;
+* @negative
+*/
+
+//CHECK#1
+eval("var x = 1; x\u000D++");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T3.js
new file mode 100644
index 000000000..c1b62542d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T3.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A1.1_T3;
+* @section: 11.3.1, 11.6.3, 7.3;
+* @assertion: Line Terminator between LeftHandSideExpression and "++" is not allowed;
+* @description: Checking Line Seprator;
+* @negative
+*/
+
+//CHECK#1
+eval("var x = 1; x\u2028++");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T4.js
new file mode 100644
index 000000000..f0ac9c409
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.1_T4.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A1.1_T4;
+* @section: 11.3.1, 11.6.3, 7.3;
+* @assertion: Line Terminator between LeftHandSideExpression and "++" is not allowed;
+* @description: Checking Paragraph separator;
+* @negative
+*/
+
+//CHECK#1
+eval("var x = 1; x\u2029++");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.2_T1.js
new file mode 100644
index 000000000..7c8d8fe59
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A1.2_T1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A1.2_T1;
+* @section: 11.3.1, 11.6.3, 7.2;
+* @assertion: White Space between LeftHandSideExpression and "++" are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("var x = 0; x\u0009++; x") !== 1) {
+ $ERROR('#1: var x = 0; x\\u0009++; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+if (eval("var x = 0; x\u000B++; x") !== 1) {
+ $ERROR('#2: var x = 0; x\\u000B++; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+if (eval("var x = 0; x\u000C++; x") !== 1) {
+ $ERROR('#3: var x = 0; x\\u000C++; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+if (eval("var x = 0; x\u0020++; x") !== 1) {
+ $ERROR('#4: var x = 0; x\\u0020++; x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+if (eval("var x = 0; x\u00A0++; x") !== 1) {
+ $ERROR('#5: var x = 0; x\\u00A0++; x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+if (eval("var x = 0; x\u0009\u000B\u000C\u0020\u00A0++; x") !== 1) {
+ $ERROR('#6: var x = 0; x\\u0009\\u000B\\u000C\\u0020\\u00A0++; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T1.js
new file mode 100644
index 000000000..4c99b4276
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T1.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A2.1_T1;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ uses GetValue and PutValue;
+* @description: Type(x) is Reference and GetBase(x) is not null;
+*/
+
+//CHECK#1
+var x = 1;
+var y = x++;
+if (y !== 1) {
+ $ERROR('#1: var x = 1; var y = x++; y === 1. Actual: ' + (y));
+} else {
+ if (x !== 1 + 1) {
+ $ERROR('#1: var x = 1; var y = x++; x === 1 + 1. Actual: ' + (x));
+ }
+}
+
+//CHECK#2
+this.x = 1;
+var y = this.x++;
+if (y !== 1) {
+ $ERROR('#2: this.x = 1; var y = this.x++; y === 1. Actual: ' + (y));
+} else {
+ if (this.x !== 1 + 1) {
+ $ERROR('#2: this.x = 1; var y = this.x++; this.x === 1 + 1. Actual: ' + (this.x));
+ }
+}
+
+//CHECK#3
+var object = new Object();
+object.prop = 1;
+var y = object.prop++;
+if (y !== 1) {
+ $ERROR('#3: var object = new Object(); object.prop = 1; var y = object.prop++; y === 1. Actual: ' + (y));
+} else {
+ if (this.x !== 1 + 1) {
+ $ERROR('#3: var object = new Object(); object.prop = 1; var y = object.prop++; object.prop === 1 + 1. Actual: ' + (object.prop));
+ }
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T2.js
new file mode 100644
index 000000000..515c76360
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A2.1_T2;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ uses GetValue and PutValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x++;
+ $ERROR('#1.1: x++ throw ReferenceError. Actual: ' + (x++));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x++ throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T3.js
new file mode 100644
index 000000000..da562f347
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.1_T3.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A2.1_T3;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ uses GetValue and PutValue;
+* @description: If Type(x) is not Reference, throw ReferenceError (or SyntaxError);
+* @negative
+*/
+
+//CHECK#1
+try {
+ 1++;
+ $ERROR('#1.1: 1++ throw ReferenceError (or SyntaxError). Actual: ' + (1++));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1++ throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ 1++;
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.2_T1.js
new file mode 100644
index 000000000..79d9372c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A2.2_T1.js
@@ -0,0 +1,109 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.3.1_A2.2_T1;
+ * @section: 11.3.1, 8.6.2.6;
+ * @assertion: Operator x++ uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+var y = object++;
+if (y !== 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; var y = object++; y === 1. Actual: ' + (y));
+} else {
+ if (object !== 1 + 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; object++; object === 1 + 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+var y = object++;
+if (y !== 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; var y = object++; y === 1. Actual: ' + (y));
+} else {
+ if (object !== 1 + 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; object++; object === 1 + 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+var y = object++;
+if (y !== 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; var y = object++; y === 1. Actual: ' + (y));
+} else {
+ if (object !== 1 + 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; object++; object === 1 + 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ var y = object++;
+ if (y !== 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; var y = object++; y === 1. Actual: ' + (y));
+ } else {
+ if (object !== 1 + 1) {
+ $ERROR('#4.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; object++; object === 1 + 1. Actual: ' + (object));
+ }
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.3: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; var y = object++; y not throw "error"');
+ } else {
+ $ERROR('#4.4: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; var y = object++; y not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return 1}};
+var y = object++;
+if (y !== 1) {
+ $ERROR('#5.1: var object = {toString: function() {return 1}}; var y = object++; y === 1. Actual: ' + (y));
+} else {
+ if (object !== 1 + 1) {
+ $ERROR('#5.2: var object = {toString: function() {return 1}}; object++; object === 1 + 1. Actual: ' + (object));
+ }
+}
+
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+var y = object++;
+if (y !== 1) {
+ $ERROR('#6.1: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; var y = object++; y === 1. Actual: ' + (y));
+} else {
+ if (object !== 1 + 1) {
+ $ERROR('#6.2: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; object++; object === 1 + 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ var y = object++;
+ $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; object++ throw "error". Actual: ' + (y));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; object++ throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ var y = object++;
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; object++ throw TypeError. Actual: ' + (y));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; object++ throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T1.js
new file mode 100644
index 000000000..d87bb767a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A3_T1;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ returns x = ToNumber(x) + 1;
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+var x = false;
+x++;
+if (x !== 0 + 1) {
+ $ERROR('#1: var x = false; x++; x === 0 + 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = new Boolean(true);
+x++;
+if (x !== 1 + 1) {
+ $ERROR('#2: var x = new Boolean(true); x++; x === 1 + 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T2.js
new file mode 100644
index 000000000..1d309f0b5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A3_T2;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ returns x = ToNumber(x) + 1;
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+var x = 0.1;
+x++;
+if (x !== 0.1 + 1) {
+ $ERROR('#1: var x = 0.1; x++; x === 0.1 + 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = new Number(-1.1);
+x++;
+if (x !== -1.1 + 1) {
+ $ERROR('#2: var x = new Number(-1.1); x++; x === -1.1 + 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T3.js
new file mode 100644
index 000000000..f866f0a35
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A3_T3;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ returns x = ToNumber(x) + 1;
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+var x = "1";
+x++;
+if (x !== 1 + 1) {
+ $ERROR('#1: var x = "1"; x++; x === 1 + 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = "x";
+x++;
+if (isNaN(x) !== true) {
+ $ERROR('#2: var x = "x"; x++; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+var x = new Number("-1");
+x++;
+if (x !== -1 + 1) {
+ $ERROR('#3: var x = new String("-1"); x++; x === -1 + 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T4.js
new file mode 100644
index 000000000..4d4813843
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A3_T4;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ returns x = ToNumber(x) + 1;
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+var x;
+x++;
+if (isNaN(x) !== true) {
+ $ERROR('#1: var x; x++; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = null;
+x++;
+if (x !== 1) {
+ $ERROR('#2: var x = null; x++; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T5.js
new file mode 100644
index 000000000..bda328004
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A3_T5.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A3_T5;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ returns x = ToNumber(x) + 1;
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+var x = {};
+x++;
+if (isNaN(x) !== true) {
+ $ERROR('#1: var x = {}; x++; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = function(){return 1};
+x++;
+if (isNaN(x) !== true) {
+ $ERROR('#2: var x = function(){return 1}; x++; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T1.js
new file mode 100644
index 000000000..3d6589d7a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A4_T1;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ returns ToNumber(x);
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+var x = false;
+var y = x++;
+if (y !== 0) {
+ $ERROR('#1: var x = false; var y = x++; y === 0. Actual: ' + (y));
+}
+
+//CHECK#2
+var x = new Boolean(true);
+var y = x++;
+if (y !== 1) {
+ $ERROR('#2: var x = new Boolean(true); var y = x++; y === 1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T2.js
new file mode 100644
index 000000000..f684d11c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A4_T2;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ returns ToNumber(x);
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+var x = -0.1;
+var y = x++;
+if (y !== -0.1) {
+ $ERROR('#1: var x = -0.1; var y = x++; y === -0.1. Actual: ' + (y));
+}
+
+//CHECK#2
+var x = new Number(1.1);
+var y = x++;
+if (y !== 1.1) {
+ $ERROR('#2: var x = new Number(1.1); var y = x++; y === 1.1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T3.js
new file mode 100644
index 000000000..174eea146
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A4_T3;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ returns ToNumber(x);
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+var x = "1";
+var y = x++;
+if (y !== 1) {
+ $ERROR('#1: var x = "1"; var y = x++; y === 1. Actual: ' + (y));
+}
+
+//CHECK#2
+var x = "x";
+var y = x++;
+if (isNaN(y) !== true) {
+ $ERROR('#2: var x = "x"; var y = x++; y === Not-a-Number. Actual: ' + (y));
+}
+
+//CHECK#3
+var x = new String("-1");
+var y = x++;
+if (y !== -1) {
+ $ERROR('#3: var x = new String("-1"); var y = x++; y === -1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T4.js
new file mode 100644
index 000000000..2e06e82b7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A4_T4;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ returns ToNumber(x);
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+var x;
+var y = x++;
+if (isNaN(y) !== true) {
+ $ERROR('#1: var x; var y = x++; y === Not-a-Number. Actual: ' + (y));
+}
+
+//CHECK#2
+var x = null;
+var y = x++;
+if (y !== 0) {
+ $ERROR('#2: var x = null; var y = x++; y === 0. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T5.js
new file mode 100644
index 000000000..99760c068
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.1_Postfix_Increment_Operator/S11.3.1_A4_T5.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.1_A4_T5;
+* @section: 11.3.1, 11.6.3;
+* @assertion: Operator x++ returns ToNumber(x);
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+var x = {};
+var y = x++;
+if (isNaN(y) !== true) {
+ $ERROR('#1: var x = {}; var y = x++; y === Not-a-Number. Actual: ' + (y));
+}
+
+//CHECK#2
+var x = function(){return 1};
+var y = x++;
+if (isNaN(y) !== true) {
+ $ERROR('#2: var x = function(){return 1}; var y = x++; y === Not-a-Number. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T1.js
new file mode 100644
index 000000000..395b3ad4b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T1.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A1.1_T1;
+* @section: 11.3.2, 11.6.3, 7.3;
+* @assertion: Line Terminator between LeftHandSideExpression and "--" is not allowed;
+* @description: Checking Line Feed;
+* @negative
+*/
+
+//CHECK#1
+eval("var x = 1; x\u000A--");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T2.js
new file mode 100644
index 000000000..d8484e980
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A1.1_T2;
+* @section: 11.3.2, 11.6.3, 7.3;
+* @assertion: Line Terminator between LeftHandSideExpression and "--" is not allowed;
+* @description: Checking Carriage Return;
+* @negative
+*/
+
+//CHECK#1
+eval("var x = 1; x\u000D--");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T3.js
new file mode 100644
index 000000000..11116aee6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T3.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A1.1_T3;
+* @section: 11.3.2, 11.6.3, 7.3;
+* @assertion: Line Terminator between LeftHandSideExpression and "--" is not allowed;
+* @description: Checking Page separator;
+* @negative
+*/
+
+//CHECK#1
+eval("var x = 1; x\u2028--");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T4.js
new file mode 100644
index 000000000..1363265a1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.1_T4.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A1.1_T4;
+* @section: 11.3.2, 11.6.3, 7.3;
+* @assertion: Line Terminator between LeftHandSideExpression and "--" is not allowed;
+* @description: Checking Line separator;
+* @negative
+*/
+
+//CHECK#1
+eval("var x = 1; x\u2029--");
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.2_T1.js
new file mode 100644
index 000000000..229ff6d91
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A1.2_T1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A1.2_T1;
+* @section: 11.3.2, 11.6.3, 7.2;
+* @assertion: White Space between LeftHandSideExpression and "--" are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("var x = 0; x\u0009--; x") !== -1) {
+ $ERROR('#1: var x = 0; x\\u0009--; x === -1. Actual: ' + (x));
+}
+
+//CHECK#2
+if (eval("var x = 0; x\u000B--; x") !== -1) {
+ $ERROR('#2: var x = 0; x\\u000B--; x === -1. Actual: ' + (x));
+}
+
+//CHECK#3
+if (eval("var x = 0; x\u000C--; x") !== -1) {
+ $ERROR('#3: var x = 0; x\\u000C--; x === -1. Actual: ' + (x));
+}
+
+//CHECK#4
+if (eval("var x = 0; x\u0020--; x") !== -1) {
+ $ERROR('#4: var x = 0; x\\u0020--; x === -1. Actual: ' + (x));
+}
+
+//CHECK#5
+if (eval("var x = 0; x\u00A0--; x") !== -1) {
+ $ERROR('#5: var x = 0; x\\u00A0--; x === -1. Actual: ' + (x));
+}
+
+//CHECK#6
+if (eval("var x = 0; x\u0009\u000B\u000C\u0020\u00A0--; x") !== -1) {
+ $ERROR('#6: var x = 0; x\\u0009\\u000B\\u000C\\u0020\\u00A0--; x === -1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T1.js
new file mode 100644
index 000000000..f62066ae2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T1.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A2.1_T1;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- uses GetValue and PutValue;
+* @description: Type(x) is Reference and GetBase(x) is not null;
+*/
+
+//CHECK#1
+var x = 1;
+if (x-- !== 1) {
+ $ERROR('#1: var x = 1; x-- === 1. Actual: ' + (x--));
+} else {
+ if (x !== 1 - 1) {
+ $ERROR('#1: var x = 1; x--; x === 1 - 1. Actual: ' + (x));
+ }
+}
+
+//CHECK#2
+this.x = 1;
+if (this.x-- !== 1) {
+ $ERROR('#2: this.x = 1; this.x-- === 1. Actual: ' + (this.x--));
+} else {
+ if (this.x !== 1 - 1) {
+ $ERROR('#2: this.x = 1; this.x--; this.x === 1 - 1. Actual: ' + (this.x));
+ }
+}
+
+//CHECK#3
+var object = new Object();
+object.prop = 1;
+if (object.prop-- !== 1) {
+ $ERROR('#3: var object = new Object(); object.prop = 1; object.prop-- === 1. Actual: ' + (object.prop--));
+} else {
+ if (this.x !== 1 - 1) {
+ $ERROR('#3: var object = new Object(); object.prop = 1; object.prop--; object.prop === 1 - 1. Actual: ' + (object.prop));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T2.js
new file mode 100644
index 000000000..e276b1b65
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A2.1_T2;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- uses GetValue and PutValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x--;
+ $ERROR('#1.1: x-- throw ReferenceError. Actual: ' + (x--));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x-- throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T3.js
new file mode 100644
index 000000000..d339dae92
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.1_T3.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A2.1_T3;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- uses GetValue and PutValue;
+* @description: If Type(x) is not Reference, throw ReferenceError (or SyntaxError);
+* @negative
+*/
+
+//CHECK#1
+try {
+ 1--;
+ $ERROR('#1.1: 1-- throw ReferenceError (or SyntaxError). Actual: ' + (1--));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1-- throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ 1--;
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.2_T1.js
new file mode 100644
index 000000000..76a136646
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A2.2_T1.js
@@ -0,0 +1,109 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.3.2_A2.2_T1;
+ * @section: 11.3.2, 8.6.2.6;
+ * @assertion: Operator x-- uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+var y = object--;
+if (y !== 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; var y = object--; y === 1. Actual: ' + (y));
+} else {
+ if (object !== 1 - 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; object--; object === 1 - 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+var y = object--;
+if (y !== 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; var y = object--; y === 1. Actual: ' + (y));
+} else {
+ if (object !== 1 - 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; object--; object === 1 - 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+var y = object--;
+if (y !== 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; var y = object--; y === 1. Actual: ' + (y));
+} else {
+ if (object !== 1 - 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; object--; object === 1 - 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ var y = object--;
+ if (y !== 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; var y = object--; y === 1. Actual: ' + (y));
+ } else {
+ if (object !== 1 - 1) {
+ $ERROR('#4.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; object--; object === 1 - 1. Actual: ' + (object));
+ }
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.3: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; y not throw "error"');
+ } else {
+ $ERROR('#4.4: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; y not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return 1}};
+var y = object--;
+if (y !== 1) {
+ $ERROR('#5.1: var object = {toString: function() {return 1}}; var y = object--; y === 1. Actual: ' + (y));
+} else {
+ if (object !== 1 - 1) {
+ $ERROR('#5.2: var object = {toString: function() {return 1}}; object--; object === 1 - 1. Actual: ' + (object));
+ }
+}
+
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+var y = object--;
+if (y !== 1) {
+ $ERROR('#6.1: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; var y = object--; y === 1. Actual: ' + (y));
+} else {
+ if (object !== 1 - 1) {
+ $ERROR('#6.2: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; object--; object === 1 - 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ var y = object--;
+ $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; object-- throw "error". Actual: ' + (y));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; object-- throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ var y = object--;
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; object-- throw TypeError. Actual: ' + (y));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; object-- throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T1.js
new file mode 100644
index 000000000..d56359c5c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A3_T1;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- returns x = ToNumber(x) - 1;
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+var x = true;
+x--;
+if (x !== 0) {
+ $ERROR('#1: var x = true; x--; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = new Boolean(false);
+x--;
+if (x !== 0 - 1) {
+ $ERROR('#2: var x = new Boolean(false); x--; x === 0 - 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T2.js
new file mode 100644
index 000000000..92ce85819
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A3_T2;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- returns x = ToNumber(x) - 1;
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+var x = 1.1;
+x--;
+if (x !== 1.1 - 1) {
+ $ERROR('#1: var x = 1.1; x--; x === 1.1 - 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = new Number(-0.1);
+x--;
+if (x !== -0.1 - 1) {
+ $ERROR('#2: var x = new Number(-0.1); x--; x === -0.1 - 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T3.js
new file mode 100644
index 000000000..31141667c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A3_T3;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- returns x = ToNumber(x) - 1;
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+var x = "1";
+x--;
+if (x !== 1 - 1) {
+ $ERROR('#1: var x = "1"; x--; x === 1 - 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = "x";
+x--;
+if (isNaN(x) !== true) {
+ $ERROR('#2: var x = "x"; x--; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+var x = new Number("-1");
+x--;
+if (x !== -1 - 1) {
+ $ERROR('#3: var x = new String("-1"); x--; x === -1 - 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T4.js
new file mode 100644
index 000000000..f9269e559
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A3_T4;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- returns x = ToNumber(x) - 1;
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+var x;
+x--;
+if (isNaN(x) !== true) {
+ $ERROR('#1: var x; x--; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = null;
+x--;
+if (x !== -1) {
+ $ERROR('#2: var x = null; x--; x === -1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T5.js
new file mode 100644
index 000000000..57b7c44fc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A3_T5.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A3_T5;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- returns x = ToNumber(x) - 1;
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+var x = {};
+x--;
+if (isNaN(x) !== true) {
+ $ERROR('#1: var x = {}; x--; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = function(){return 1};
+x--;
+if (isNaN(x) !== true) {
+ $ERROR('#2: var x = function(){return 1}; x--; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T1.js
new file mode 100644
index 000000000..a39f21909
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A4_T1;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- returns ToNumber(x);
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+var x = true;
+var y = x--;
+if (y !== 1) {
+ $ERROR('#1: var x = true; var y = x--; y === 1. Actual: ' + (y));
+}
+
+//CHECK#2
+var x = new Boolean(false);
+var y = x--;
+if (y !== 0) {
+ $ERROR('#2: var x = new Boolean(false); var y = x--; y === 0. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T2.js
new file mode 100644
index 000000000..2bc4b06ce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A4_T2;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- returns ToNumber(x);
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+var x = 1.1;
+var y = x--;
+if (y !== 1.1) {
+ $ERROR('#1: var x = 1.1; var y = x--; y === 1.1. Actual: ' + (y));
+}
+
+//CHECK#2
+var x = new Number(-0.1);
+var y = x--;
+if (y !== -0.1) {
+ $ERROR('#2: var x = new Number(-0.1); var y = x--; y === -0.1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T3.js
new file mode 100644
index 000000000..29a7b0ce8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A4_T3;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- returns ToNumber(x);
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+var x = "1";
+var y = x--;
+if (y !== 1) {
+ $ERROR('#1: var x = "1"; var y = x--; y === 1. Actual: ' + (y));
+}
+
+//CHECK#2
+var x = "x";
+var y = x--;
+if (isNaN(y) !== true) {
+ $ERROR('#2: var x = "x"; var y = x--; y === Not-a-Number. Actual: ' + (y));
+}
+
+//CHECK#3
+var x = new String("-1");
+var y = x--;
+if (y !== -1) {
+ $ERROR('#3: var x = new String("-1"); var y = x--; y === -1. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T4.js
new file mode 100644
index 000000000..e86b6d7ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A4_T4;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- returns ToNumber(x);
+* @description: If Type(x) is undefined or null;
+*/
+
+//CHECK#1
+var x;
+var y = x--;
+if (isNaN(y) !== true) {
+ $ERROR('#1: var x; var y = x--; y === Not-a-Number. Actual: ' + (y));
+}
+
+//CHECK#2
+var x = null;
+var y = x--;
+if (y !== 0) {
+ $ERROR('#2: var x = null; var y = x--; y === 0. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T5.js
new file mode 100644
index 000000000..b1a630041
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.3_PostfixExpressions/11.3.2_Postfix_Decrement_Operator/S11.3.2_A4_T5.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.3.2_A4_T5;
+* @section: 11.3.2, 11.6.3;
+* @assertion: Operator x-- returns ToNumber(x);
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+var x = {};
+var y = x--;
+if (isNaN(y) !== true) {
+ $ERROR('#1: var x = {}; var y = x--; y === Not-a-Number. Actual: ' + (y));
+}
+
+//CHECK#2
+var x = function(){return 1};
+var y = x--;
+if (isNaN(y) !== true) {
+ $ERROR('#2: var x = function(){return 1}; var y = x--; y === Not-a-Number. Actual: ' + (y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A1.js
new file mode 100644
index 000000000..2642e00e6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.1_A1;
+* @section: 11.4.1;
+* @assertion: White Space and Line Terminator between "delete" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("delete\u00090") !== true) {
+ $ERROR('#1: delete\\u00090 === true');
+}
+
+//CHECK#2
+if (eval("delete\u000B0") !== true) {
+ $ERROR('#2: delete\\u000B0 === true');
+}
+
+//CHECK#3
+if (eval("delete\u000C0") !== true) {
+ $ERROR('#3: delete\\u000C0 === true');
+}
+
+//CHECK#4
+if (eval("delete\u00200") !== true) {
+ $ERROR('#4: delete\\u00200 === true');
+}
+
+//CHECK#5
+if (eval("delete\u00A00") !== true) {
+ $ERROR('#5: delete\\u00A00 === true');
+}
+
+//CHECK#6
+if (eval("delete\u000A0") !== true) {
+ $ERROR('#6: delete\\u000A0 === true');
+}
+
+//CHECK#7
+if (eval("delete\u000D0") !== true) {
+ $ERROR('#7: delete\\u000D0 === true');
+}
+
+//CHECK#8
+if (eval("delete\u20280") !== true) {
+ $ERROR('#8: delete\\u20280 === true');
+}
+
+//CHECK#9
+if (eval("delete\u20290") !== true) {
+ $ERROR('#9: delete\\u20290 === true');
+}
+
+//CHECK#10
+if (eval("delete\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20290") !== true) {
+ $ERROR('#10: delete\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20290 === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.1.js
new file mode 100644
index 000000000..3c960c972
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.1_A2.1;
+* @section: 11.4.1;
+* @assertion: If Type(x) is not Reference, return true;
+* @description: Checking primitive value and Object value cases;
+*/
+
+//CHECK#1
+if (delete 1 !== true) {
+ $ERROR('#1: delete 1 === true');
+}
+
+//CHECK#2
+if (delete new Object() !== true) {
+ $ERROR('#2: delete new Object() === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.2_T1.js
new file mode 100644
index 000000000..79b4f2997
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.2_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.1_A2.2_T1;
+* @section: 11.4.1;
+* @assertion: If GetBase(x) doesn't have a property GetPropertyName(x), return true;
+* @description: Checking undeclared variable case;
+*/
+
+//CHECK#1
+if (delete x !== true) {
+ $ERROR('#1: delete x === true');
+}
+
+//CHECK#2
+if (delete this.x !== true) {
+ $ERROR('#2: delete this.x === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.2_T2.js
new file mode 100644
index 000000000..75e30cbe3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A2.2_T2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.1_A2.2_T2;
+* @section: 11.4.1;
+* @assertion: If GetBase(x) doesn't have a property GetPropertyName(x), return true;
+* @description: Checking Object object and Function object cases;
+*/
+
+//CHECK#1
+function MyFunction(){}
+var MyObject = new MyFunction();
+if (delete MyObject.prop !== true) {
+ $ERROR('#1: function MyFunction(){}; var MyObject = new MyFunction(); delete MyObject.prop === true');
+}
+
+//CHECK#2
+var MyObject = new Object();
+if (delete MyObject.prop !== true) {
+ $ERROR('#2: var MyObject = new Object(); delete MyObject.prop === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.1.js
new file mode 100644
index 000000000..ea3ab3753
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.1_A3.1;
+* @section: 11.4.1;
+* @assertion: If the property has the DontDelete attribute, return false;
+* @description: Checking declared variable;
+*/
+
+//CHECK#1
+var x = 1;
+if (delete x !== false) {
+ $ERROR('#1: var x = 1; delete x === false');
+}
+
+//CHECK#2
+var y = 1;
+if (delete this.y !== false) {
+ $ERROR('#2: var y = 1; delete this.y === false');
+}
+
+//CHECK#3
+function MyFunction(){};
+if (delete MyFunction !== false) {
+ $ERROR('#3: function MyFunction(){}; delete MyFunction === false');
+}
+
+//CHECK#4
+function MyFunction(){};
+var MyObject = new MyFunction();
+if (delete MyObject !== false) {
+ $ERROR('#4: function MyFunction(){}; var MyObject = new MyFunction(); delete MyObject === false');
+}
+
+//CHECK#5
+if (delete MyObject !== false) {
+ $ERROR('#5: function MyFunction(){}; var MyObject = new MyFunction(); delete MyObject === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.2.js
new file mode 100644
index 000000000..16d7b94db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.1_A3.2;
+* @section: 11.4.1;
+* @assertion: If the property doesn't have the DontDelete attribute, return true;
+* @description: Checking declared variable;
+*/
+
+//CHECK#1
+x = 1;
+if (delete x !== true) {
+ $ERROR('#1: x = 1; delete x === true');
+}
+
+//CHECK#2
+function MyFunction(){};
+MyFunction.prop = 1;
+if (delete MyFunction.prop !== true) {
+ $ERROR('#2: function MyFunction(){}; MyFunction.prop = 1; delete MyFunction.prop === true');
+}
+
+//CHECK#3
+function MyFunction(){};
+var MyObject = new MyFunction();
+MyObject.prop = 1;
+if (delete MyObject.prop !== true) {
+ $ERROR('#3: function MyFunction(){}; var MyObject = new MyFunction(); MyFunction.prop = 1; delete MyObject.prop === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.3.js
new file mode 100644
index 000000000..169310d5d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A3.3.js
@@ -0,0 +1,60 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.1_A3.3;
+* @section: 11.4.1;
+* @assertion: If the property doesn't have the DontDelete attribute, remove the property;
+* @description: Checking declared variable;
+*/
+
+//CHECK#1
+try {
+ x = 1;
+ delete x;
+ x;
+ $ERROR('#1: x = 1; delete x; x is not exist');
+} catch (e) {
+ if (e instanceof ReferenceError !== true) {
+ $ERROR('#1: x = 1; delete x; x is not exist');
+ }
+}
+
+
+//CHECK#2
+function MyFunction(){};
+MyFunction.prop = 1;
+delete MyFunction.prop;
+if (MyFunction.prop !== undefined) {
+ $ERROR('#2: function MyFunction(){}; MyFunction.prop = 1; delete MyFunction.prop; MyFunction.prop === undefined. Actual: ' + (MyFunction.prop));
+
+}
+
+//CHECK#3
+function MyFunction(){};
+var MyObjectVar = new MyFunction();
+MyObjectVar.prop = 1;
+delete MyObjectVar.prop;
+if (MyObjectVar.prop !== undefined) {
+ $ERROR('#3: function MyFunction(){}; var MyObjectVar = new MyFunction(); MyFunction.prop = 1; delete MyObjectVar.prop; MyObjectVar.prop === undefined. Actual: ' + (MyObjectVar.prop));
+}
+
+//CHECK#4
+if (delete MyObjectVar !== false) {
+ $ERROR('#4: function MyFunction(){}; var MyObjectVar = new MyFunction(); delete MyObjectVar === false');
+}
+
+//CHECK#5
+function MyFunction(){};
+MyObjectNotVar = new MyFunction();
+MyObjectNotVar.prop = 1;
+delete MyObjectNotVar.prop;
+if (MyObjectNotVar.prop !== undefined) {
+ $ERROR('#5: function MyFunction(){}; MyObjectNotVar = new MyFunction(); MyFunction.prop = 1; delete MyObjectNotVar.prop; MyObjectNotVar.prop === undefined. Actual: ' + (MyObjectNotVar.prop));
+}
+
+//CHECK#6
+if (delete MyObjectNotVar !== true) {
+ $ERROR('#6: function MyFunction(){}; var MyObjectNotVar = new MyFunction(); delete MyObjectNotVar === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A4.js
new file mode 100644
index 000000000..83f5ce1d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.1_The_delete_Operator/S11.4.1_A4.js
@@ -0,0 +1,18 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.1_A4;
+* @section: 11.4.1;
+* @assertion: "Delete" operator removes property, which is reference to the object, not the object;
+* @description: Checking two reference by one object;
+*/
+
+//CHECK#1
+obj = new Object();
+ref = obj;
+delete ref;
+if (typeof obj !== "object") {
+ $ERROR('#1: obj = new Object(); ref = obj; delete ref; typeof obj === "object". Actual: ' + (typeof obj));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A1.js
new file mode 100644
index 000000000..c299861ea
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.2_A1;
+* @section: 11.4.2;
+* @assertion: White Space and Line Terminator between "void" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("void\u00090") !== undefined) {
+ $ERROR('#1: void\\u00090 === undefined');
+}
+
+//CHECK#2
+if (eval("void\u000B0") !== undefined) {
+ $ERROR('#2: void\\u000B0 === undefined');
+}
+
+//CHECK#3
+if (eval("void\u000C0") !== undefined) {
+ $ERROR('#3: void\\u000C0 === undefined');
+}
+
+//CHECK#4
+if (eval("void\u00200") !== undefined) {
+ $ERROR('#4: void\\u00200 === undefined');
+}
+
+//CHECK#5
+if (eval("void\u00A00") !== undefined) {
+ $ERROR('#5: void\\u00A00 === undefined');
+}
+
+//CHECK#6
+if (eval("void\u000A0") !== undefined) {
+ $ERROR('#6: void\\u000A0 === undefined');
+}
+
+//CHECK#7
+if (eval("void\u000D0") !== undefined) {
+ $ERROR('#7: void\\u000D0 === undefined');
+}
+
+//CHECK#8
+if (eval("void\u20280") !== undefined) {
+ $ERROR('#8: void\\u20280 === undefined');
+}
+
+//CHECK#9
+if (eval("void\u20290") !== undefined) {
+ $ERROR('#9: void\\u20290 === undefined');
+}
+
+//CHECK#10
+if (eval("void\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20290") !== undefined) {
+ $ERROR('#10: void\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20290 === undefined');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A2_T1.js
new file mode 100644
index 000000000..e668c4310
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A2_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.2_A2_T1;
+* @section: 11.4.2;
+* @assertion: Operator "void" uses GetValue;
+* @description: Either Type(x) is not Reference or GetBase(x) is not null;
+*/
+
+//CHECK#1
+if (void 0 !== undefined) {
+ $ERROR('#1: void 0 === undefined. Actual: ' + (void 0));
+}
+
+//CHECK#2
+var x = 0;
+if (void x !== undefined) {
+ $ERROR('#2: var x = 0; void x === undefined. Actual: ' + (void x));
+}
+
+//CHECK#3
+var x = new Object();
+if (void x !== undefined) {
+ $ERROR('#3: var x = new Object(); void x === undefined. Actual: ' + (void x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A2_T2.js
new file mode 100644
index 000000000..8bc788ea8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A2_T2.js
@@ -0,0 +1,13 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.2_A2_T2;
+* @section: 11.4.2;
+* @assertion: Operator "void" uses GetValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+* @negative
+*/
+
+//CHECK#1
+void x;
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T1.js
new file mode 100644
index 000000000..944854623
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.2_A4_T1;
+* @section: 11.4.2;
+* @assertion: Operator "void" evaluates UnaryExpression and returns undefined;
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+var x = false;
+if (void x !== undefined) {
+ $ERROR('#1: var x = false; void x === undefined. Actual: ' + (void x));
+}
+
+//CHECK#2
+var x = new Boolean(true);
+if (void x !== undefined) {
+ $ERROR('#2: var x = new Boolean(true); void x === undefined. Actual: ' + (void x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T2.js
new file mode 100644
index 000000000..5c2a33c54
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.2_A4_T2;
+* @section: 11.4.2;
+* @assertion: Operator "void" evaluates UnaryExpression and returns undefined;
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+var x = 0.1;
+if (void x !== undefined) {
+ $ERROR('#1: var x = 0.1; void x === undefined. Actual: ' + (void x));
+}
+
+//CHECK#2
+var x = new Number(-1.1);
+if (void x !== undefined) {
+ $ERROR('#2: var x = new Number(-1.1); void x === undefined. Actual: ' + (void x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T3.js
new file mode 100644
index 000000000..9e41f2c03
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.2_A4_T3;
+* @section: 11.4.2;
+* @assertion: Operator "void" evaluates UnaryExpression and returns undefined;
+* @description: Type(x) is string primitive of String object;
+*/
+
+//CHECK#1
+var x = "1";
+if (void x !== undefined) {
+ $ERROR('#1: var x = "1"; void x === undefined. Actual: ' + (void x));
+}
+
+//CHECK#2
+var x = "x";
+if (isNaN(void x) !== true) {
+ $ERROR('#2: var x = "x"; void x === undefined. Actual: ' + (void x));
+}
+
+//CHECK#3
+var x = new String("-1");
+if (void x !== undefined) {
+ $ERROR('#3: var x = new String("-1"); void x === undefined. Actual: ' + (void x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T4.js
new file mode 100644
index 000000000..db4d09672
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T4.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.2_A4_T4;
+* @section: 11.4.2;
+* @assertion: Operator "void" evaluates UnaryExpression and returns undefined;
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+var x;
+if (isNaN(void x) !== true) {
+ $ERROR('#1: var x; void x === undefined. Actual: ' + (void x));
+}
+
+//CHECK#2
+var x = null;
+if (void x !== undefined) {
+ $ERROR('#2: var x = null; void x === undefined. Actual: ' + (void x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T5.js
new file mode 100644
index 000000000..d2df4cbd9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.2_A4_T5;
+* @section: 11.4.2;
+* @assertion: Operator "void" evaluates UnaryExpression and returns undefined;
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+var x = {};
+if (isNaN(void x) !== true) {
+ $ERROR('#1: var x = {}; void x === undefined. Actual: ' + (void x));
+}
+
+//CHECK#2
+var x = function(){return 1};
+if (isNaN(void x) !== true) {
+ $ERROR('#2: var x = function(){return 1}; void x === undefined. Actual: ' + (void x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T6.js
new file mode 100644
index 000000000..1acd5848c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.2_The_void_Operator/S11.4.2_A4_T6.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.2_A4_T6;
+* @section: 11.4.2;
+* @assertion: Operator "void" evaluates UnaryExpression and returns undefined;
+* @description: Checking Simple Assignment operator;
+*/
+
+//CHECK#1
+var x = 0;
+if (void (x = 1) !== undefined) {
+ $ERROR('#1: var x = 0; void (x = 1) === undefined. Actual: ' + (void (x = 1)));
+} else {
+ if (x !== 1) {
+ $ERROR('#1: var x = 0; void (x = 1); x === 1. Actual: ' + (x));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A1.js
new file mode 100644
index 000000000..141c2fa28
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.3_A1;
+* @section: 11.4.3;
+* @assertion: White Space and Line Terminator between "typeof" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("var x = 0; typeof\u0009x") !== "number") {
+ $ERROR('#1: var x = 0; typeof\\u0009x; x === "number". Actual: ' + (x));
+}
+
+//CHECK#2
+if (eval("var x = 0; typeof\u000Bx") !== "number") {
+ $ERROR('#2: var x = 0; typeof\\u000Bx; x === "number". Actual: ' + (x));
+}
+
+//CHECK#3
+if (eval("var x = 0; typeof\u000Cx") !== "number") {
+ $ERROR('#3: var x = 0; typeof\\u000Cx; x === "number". Actual: ' + (x));
+}
+
+//CHECK#4
+if (eval("var x = 0; typeof\u0020x") !== "number") {
+ $ERROR('#4: var x = 0; typeof\\u0020x; x === "number". Actual: ' + (x));
+}
+
+//CHECK#5
+if (eval("var x = 0; typeof\u00A0x") !== "number") {
+ $ERROR('#5: var x = 0; typeof\\u00A0x; x === "number". Actual: ' + (x));
+}
+
+//CHECK#6
+if (eval("var x = 0; typeof\u000Ax") !== "number") {
+ $ERROR('#6: var x = 0; typeof\\u000Ax; x === "number". Actual: ' + (x));
+}
+
+//CHECK#7
+if (eval("var x = 0; typeof\u000Dx") !== "number") {
+ $ERROR('#7: var x = 0; typeof\\u000Dx; x === "number". Actual: ' + (x));
+}
+
+//CHECK#8
+if (eval("var x = 0; typeof\u2028x") !== "number") {
+ $ERROR('#8: var x = 0; typeof\\u2028x; x === "number". Actual: ' + (x));
+}
+
+//CHECK#9
+if (eval("var x = 0; typeof\u2029x") !== "number") {
+ $ERROR('#9: var x = 0; typeof\\u2029x; x === "number". Actual: ' + (x));
+}
+
+//CHECK#10
+if (eval("var x = 0; typeof\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029x") !== "number") {
+ $ERROR('#10: var x = 0; typeof\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029x; x === "number". Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A2_T1.js
new file mode 100644
index 000000000..e10b77101
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A2_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.3_A2_T1;
+* @section: 11.4.3;
+* @assertion: Operator "typeof" uses GetValue;
+* @description: Either Type(x) is not Reference or GetBase(x) is not null;
+*/
+
+//CHECK#1
+if (typeof 0 !== "number") {
+ $ERROR('#1: typeof 0 === "number". Actual: ' + (typeof 0));
+}
+
+//CHECK#2
+var x = 0;
+if (typeof x !== "number") {
+ $ERROR('#2: typeof x === "number". Actual: ' + (typeof x));
+}
+
+//CHECK#3
+var x = new Object();
+if (typeof x !== "object") {
+ $ERROR('#3: var x = new Object(); typeof x === "object". Actual: ' + (typeof x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A2_T2.js
new file mode 100644
index 000000000..a67f8bb7b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A2_T2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.3_A2_T2;
+* @section: 11.4.3;
+* @assertion: Operator "typeof" uses GetValue;
+* @description: If GetBase(x) is null, return "undefined";
+*/
+
+//CHECK#1
+if (typeof x !== "undefined") {
+ $ERROR('#1: typeof x === "undefined". Actual: ' + (typeof x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.1.js
new file mode 100644
index 000000000..57f977aed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.3_A3.1;
+* @section: 11.4.3;
+* @assertion: Result of applying "typeof" operator to undefined is "undefined";
+* @description: typeof undefined === "undefined";
+*/
+
+//CHECK#1
+if (typeof undefined !== "undefined") {
+ $ERROR('#1: typeof undefined === "undefined". Actual: ' + (typeof undefined));
+}
+
+//CHECK#2
+if (typeof void 0 !== "undefined") {
+ $ERROR('#2: typeof void 0 === "undefined". Actual: ' + (typeof void 0));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.2.js
new file mode 100644
index 000000000..fa9289780
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.3_A3.2;
+* @section: 11.4.3;
+* @assertion: Result of applying "typeof" operator to null is "object";
+* @description: typeof null === "object";
+*/
+
+//CHECK#1
+if (typeof null !== "object") {
+ $ERROR('#1: typeof null === "object". Actual: ' + (typeof null));
+}
+
+//CHECK#2
+if (typeof RegExp("0").exec("1") !== "object") {
+ $ERROR('#2: typeof RegExp("0").exec("1") === "object". Actual: ' + (typeof RegExp("0").exec("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.3.js
new file mode 100644
index 000000000..69ae3ea68
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.3.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.3_A3.3;
+* @section: 11.4.3;
+* @assertion: Result of applying "typeof" operator to boolean is "boolean";
+* @description: typeof (boolean value) === "boolean";
+*/
+
+//CHECK#1
+if (typeof true !== "boolean") {
+ $ERROR('#1: typeof true === "boolean". Actual: ' + (typeof true));
+}
+
+//CHECK#2
+if (typeof false !== "boolean") {
+ $ERROR('#2: typeof false === "boolean". Actual: ' + (typeof false));
+}
+
+//CHECK#3
+if (typeof !-1 !== "boolean") {
+ $ERROR('#3: typeof !-1 === "boolean". Actual: ' + (typeof !-1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.4.js
new file mode 100644
index 000000000..2eb59c509
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.4.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.3_A3.4;
+* @section: 11.4.3;
+* @assertion: Result of appying "typeof" operator to number is "number";
+* @description: typeof (number value) === "number";
+*/
+
+//CHECK#1
+if (typeof 1 !== "number") {
+ $ERROR('#1: typeof 1 === "number". Actual: ' + (typeof 1));
+}
+
+//CHECK#2
+if (typeof Number.NaN !== "number") {
+ $ERROR('#2: typeof NaN === "number". Actual: ' + (typeof NaN));
+}
+
+//CHECK#3
+if (typeof Number.POSITIVE_INFINITY !== "number") {
+ $ERROR('#3: typeof Infinity === "number". Actual: ' + (typeof Infinity));
+}
+
+//CHECK#4
+if (typeof Number.NEGATIVE_INFINITY !== "number") {
+ $ERROR('#4: typeof -Infinity === "number". Actual: ' + (typeof -Infinity));
+}
+
+//CHECK#5
+if (typeof Math.PI !== "number") {
+ $ERROR('#5: typeof Math.PI === "number". Actual: ' + (typeof Math.PI));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.5.js
new file mode 100644
index 000000000..4f16f8361
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.5.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.3_A3.5;
+* @section: 11.4.3;
+* @assertion: Result of appying "typeof" operator to string is "string";
+* @description: typeof (string value) === "string";
+*/
+
+//CHECK#1
+if (typeof "1" !== "string") {
+ $ERROR('#1: typeof "1" === "string". Actual: ' + (typeof "1"));
+}
+
+//CHECK#2
+if (typeof "NaN" !== "string") {
+ $ERROR('#2: typeof "NaN" === "string". Actual: ' + (typeof "NaN"));
+}
+
+//CHECK#3
+if (typeof "Infinity" !== "string") {
+ $ERROR('#3: typeof "Infinity" === "string". Actual: ' + (typeof "Infinity"));
+}
+
+//CHECK#4
+if (typeof "" !== "string") {
+ $ERROR('#4: typeof "" === "string". Actual: ' + (typeof ""));
+}
+
+//CHECK#5
+if (typeof "true" !== "string") {
+ $ERROR('#5: typeof "true" === "string". Actual: ' + (typeof "true"));
+}
+
+//CHECK#6
+if (typeof Date() !== "string") {
+ $ERROR('#6: typeof Date() === "string". Actual: ' + (typeof Date()));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.6.js
new file mode 100644
index 000000000..b01810f97
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.6.js
@@ -0,0 +1,72 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.3_A3.6;
+* @section: 11.4.3;
+* @assertion: Result of applying "typeof" operator to the object that is native and doesn't implement [[Call]] is "object";
+* @description: typeof (object without [[Call]]) === "object";
+*/
+
+//CHECK#1
+if (typeof this !== "object") {
+ $ERROR('#1: typeof this === "object". Actual: ' + (typeof this));
+}
+
+//CHECK#2
+if (typeof new Object() !== "object") {
+ $ERROR('#2: typeof new Object() === "object". Actual: ' + (typeof new Object()));
+}
+
+//CHECK#3
+if (typeof new Array(1,2,3) !== "object") {
+ $ERROR('#3: typeof new Array(1,2,3) === "object". Actual: ' + (typeof new Array(1,2,3)));
+}
+
+//CHECK#4
+if (typeof Array(1,2,3) !== "object") {
+ $ERROR('#4: typeof Array(1,2,3) === "object". Actual: ' + (typeof Array(1,2,3)));
+}
+
+//CHECK#5
+if (typeof new String("x") !== "object") {
+ $ERROR('#5: typeof new String("x") === "object". Actual: ' + (typeof new String("x")));
+}
+
+//CHECK#6
+if (typeof new Boolean(true) !== "object") {
+ $ERROR('#6: typeof new Boolean(true) === "object". Actual: ' + (typeof new Boolean(true)));
+}
+
+//CHECK#7
+if (typeof new Number(1) !== "object") {
+ $ERROR('#7: typeof new Number(1) === "object". Actual: ' + (typeof new Number(1)));
+}
+
+//CHECK#8
+//The Math object does not have a [[Construct]] property;
+//it is not possible to use the Math object as a constructor with the new operator.
+//The Math object does not have a [[Call]] property; it is not possible to invoke the Math object as a object.
+if (typeof Math !== "object") {
+ $ERROR('#8: typeof Math === "object". Actual: ' + (typeof Math));
+}
+
+//CHECK#9
+if (typeof new Date() !== "object") {
+ $ERROR('#9: typeof new Date() === "object". Actual: ' + (typeof new Date()));
+}
+
+//CHECK#10
+if (typeof new Error() !== "object") {
+ $ERROR('#10: typeof new Error() === "object". Actual: ' + (typeof new Error()));
+}
+
+//CHECK#11
+if (typeof new RegExp() !== "object") {
+ $ERROR('#11: typeof new RegExp() === "object". Actual: ' + (typeof new RegExp()));
+}
+
+//CHECK#12
+if (typeof RegExp() !== "object") {
+ $ERROR('#12: typeof RegExp() === "object". Actual: ' + (typeof RegExp()));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.7.js
new file mode 100644
index 000000000..b6134679e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.3_The_typeof_Operator/S11.4.3_A3.7.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.3_A3.7;
+* @section: 11.4.3;
+* @assertion: Result of applying "typeof" operator to the object that is native and implements [[Call]] is "function";
+* @description: typeof (object with [[Call]]) === "function";
+*/
+
+//CHECK#1
+if (typeof new Function() !== "function") {
+ $ERROR('#1: typeof new Function() === "function". Actual: ' + (typeof new Function()));
+}
+
+//CHECK#2
+if (typeof Function() !== "function") {
+ $ERROR('#2: typeof Function() === "function". Actual: ' + (typeof Function()));
+}
+
+//CHECK#3
+if (typeof Object !== "function") {
+ $ERROR('#3: typeof Object === "function". Actual: ' + (typeof Object));
+}
+
+//CHECK#4
+if (typeof String !== "function") {
+ $ERROR('#4: typeof String === "function". Actual: ' + (typeof String));
+}
+
+//CHECK5
+if (typeof Boolean !== "function") {
+ $ERROR('#5: typeof Boolean === "function". Actual: ' + (typeof Boolean));
+}
+
+//CHECK#6
+if (typeof Number !== "function") {
+ $ERROR('#6: typeof Number === "function". Actual: ' + (typeof Number));
+}
+
+//CHECK#7
+if (typeof Date !== "function") {
+ $ERROR('#7: typeof Date === "function". Actual: ' + (typeof Date));
+}
+
+//CHECK#8
+if (typeof Error !== "function") {
+ $ERROR('#8: typeof Error === "function". Actual: ' + (typeof Error));
+}
+
+//CHECK#9
+if (typeof RegExp !== "function") {
+ $ERROR('#9: typeof RegExp === "function". Actual: ' + (typeof RegExp));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A1.js
new file mode 100644
index 000000000..edd8abd85
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A1;
+* @section: 11.4.4, 11.6.3, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between "++" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("var x = 0; ++\u0009x") !== 1) {
+ $ERROR('#1: var x = 0; ++\\u0009x; x === 1. Actual: ' + (x));
+}
+
+//CHECK#2
+if (eval("var x = 0; ++\u000Bx") !== 1) {
+ $ERROR('#2: var x = 0; ++\\u000Bx; x === 1. Actual: ' + (x));
+}
+
+//CHECK#3
+if (eval("var x = 0; ++\u000Cx") !== 1) {
+ $ERROR('#3: var x = 0; ++\\u000Cx; x === 1. Actual: ' + (x));
+}
+
+//CHECK#4
+if (eval("var x = 0; ++\u0020x") !== 1) {
+ $ERROR('#4: var x = 0; ++\\u0020x; x === 1. Actual: ' + (x));
+}
+
+//CHECK#5
+if (eval("var x = 0; ++\u00A0x") !== 1) {
+ $ERROR('#5: var x = 0; ++\\u00A0x; x === 1. Actual: ' + (x));
+}
+
+//CHECK#6
+if (eval("var x = 0; ++\u000Ax") !== 1) {
+ $ERROR('#6: var x = 0; ++\\u000Ax; x === 1. Actual: ' + (x));
+}
+
+//CHECK#7
+if (eval("var x = 0; ++\u000Dx") !== 1) {
+ $ERROR('#7: var x = 0; ++\\u000Dx; x === 1. Actual: ' + (x));
+}
+
+//CHECK#8
+if (eval("var x = 0; ++\u2028x") !== 1) {
+ $ERROR('#8: var x = 0; ++\\u2028x; x === 1. Actual: ' + (x));
+}
+
+//CHECK#9
+if (eval("var x = 0; ++\u2029x") !== 1) {
+ $ERROR('#9: var x = 0; ++\\u2029x; x === 1. Actual: ' + (x));
+}
+
+//CHECK#10
+if (eval("var x = 0; ++\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029x") !== 1) {
+ $ERROR('#10: var x = 0; ++\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029x; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T1.js
new file mode 100644
index 000000000..34d2168dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T1.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A2.1_T1;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x uses GetValue and PutValue;
+* @description: Type(x) is Reference and GetBase(x) is not null;
+*/
+
+//CHECK#1
+var x = 1;
+if (++x !== 1 + 1) {
+ $ERROR('#1: var x = 1; ++x === 1 + 1. Actual: ' + (++x));
+} else {
+ if (x !== 1 + 1) {
+ $ERROR('#1: var x = 1; ++x; x === 1 + 1. Actual: ' + (x));
+ }
+}
+
+//CHECK#2
+this.x = 1;
+if (++this.x !== 1 + 1) {
+ $ERROR('#2: this.x = 1; ++this.x === 1 + 1. Actual: ' + (++this.x));
+} else {
+ if (this.x !== 1 + 1) {
+ $ERROR('#2: this.x = 1; ++this.x; this.x === 1 + 1. Actual: ' + (this.x));
+ }
+}
+
+//CHECK#3
+var object = new Object();
+object.prop = 1;
+if (++object.prop !== 1 + 1) {
+ $ERROR('#3: var object = new Object(); object.prop = 1; ++object.prop === 1 + 1. Actual: ' + (++object.prop));
+} else {
+ if (this.x !== 1 + 1) {
+ $ERROR('#3: var object = new Object(); object.prop = 1; ++object.prop; object.prop === 1 + 1. Actual: ' + (object.prop));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T2.js
new file mode 100644
index 000000000..4c951602c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A2.1_T2;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x uses GetValue and PutValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ ++x;
+ $ERROR('#1.1: ++x throw ReferenceError. Actual: ' + (++x));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: ++x throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T3.js
new file mode 100644
index 000000000..feffe6b60
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.1_T3.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A2.1_T3;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x uses GetValue and PutValue;
+* @description: If Type(x) is not Reference, throw ReferenceError (or SyntaxError);
+* @negative
+*/
+
+//CHECK#1
+try {
+ ++1;
+ $ERROR('#1.1: ++1 throw ReferenceError (or SyntaxError). Actual: ' + (++1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: ++1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ ++1;
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.2_T1.js
new file mode 100644
index 000000000..6d0183284
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A2.2_T1.js
@@ -0,0 +1,103 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.4.4_A2.2_T1;
+ * @section: 11.4.4, 8.6.2.6;
+ * @assertion: Operator ++x uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+if (++object !== 1 + 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; ++object === 1 + 1. Actual: ' + (++object));
+} else {
+ if (object !== 1 + 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; ++object; object === 1 + 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+if (++object !== 1 + 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; ++object === 1 + 1. Actual: ' + (++object));
+} else {
+ if (object !== 1 + 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; ++object; object === 1 + 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+if (++object !== 1 + 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; ++object === 1 + 1. Actual: ' + (++object));
+} else {
+ if (object !== 1 + 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; ++object; object === 1 + 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ if (++object !== 1 + 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ++object === 1 + 1. Actual: ' + (++object));
+ } else {
+ if (object !== 1 + 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ++object; object === 1 + 1. Actual: ' + (object));
+ }
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ++object not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ++object not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return 1}};
+if (++object !== 1 + 1) {
+ $ERROR('#5.1: var object = {toString: function() {return 1}}; ++object === 1 + 1. Actual: ' + (++object));
+} else {
+ if (object !== 1 + 1) {
+ $ERROR('#5.2: var object = {toString: function() {return 1}}; ++object; object === 1 + 1. Actual: ' + (object));
+ }
+}
+
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+if (++object !== 1 + 1) {
+ $ERROR('#6.1: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; ++object === 1 + 1. Actual: ' + (++object));
+} else {
+ if (object !== 1 + 1) {
+ $ERROR('#6.2: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; ++object; object === 1 + 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ ++object;
+ $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; ++object throw "error". Actual: ' + (++object));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; ++object throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ ++object;
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; ++object throw TypeError. Actual: ' + (++object));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; ++object throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T1.js
new file mode 100644
index 000000000..738629610
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A3_T1;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x returns x = ToNumber(x) + 1;
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+var x = false;
+++x;
+if (x !== 0 + 1) {
+ $ERROR('#1: var x = false; ++x; x === 0 + 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = new Boolean(true);
+++x;
+if (x !== 1 + 1) {
+ $ERROR('#2: var x = new Boolean(true); ++x; x === 1 + 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T2.js
new file mode 100644
index 000000000..c3e89f381
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A3_T2;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x returns x = ToNumber(x) + 1;
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+var x = 0.1;
+++x;
+if (x !== 0.1 + 1) {
+ $ERROR('#1: var x = 0.1; ++x; x === 0.1 + 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = new Number(-1.1);
+++x;
+if (x !== -1.1 + 1) {
+ $ERROR('#2: var x = new Number(-1.1); ++x; x === -1.1 + 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T3.js
new file mode 100644
index 000000000..50b298dd8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A3_T3;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x returns x = ToNumber(x) + 1;
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+var x = "1";
+++x;
+if (x !== 1 + 1) {
+ $ERROR('#1: var x = "1"; ++x; x === 1 + 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = "x";
+++x;
+if (isNaN(x) !== true) {
+ $ERROR('#2: var x = "x"; ++x; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+var x = new Number("-1");
+++x;
+if (x !== -1 + 1) {
+ $ERROR('#3: var x = new String("-1"); ++x; x === -1 + 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T4.js
new file mode 100644
index 000000000..8b6f1c5ad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A3_T4;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x returns x = ToNumber(x) + 1;
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+var x;
+++x;
+if (isNaN(x) !== true) {
+ $ERROR('#1: var x; ++x; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = null;
+++x;
+if (x !== 1) {
+ $ERROR('#2: var x = null; ++x; x === 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T5.js
new file mode 100644
index 000000000..c32f787ec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A3_T5.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A3_T5;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x returns x = ToNumber(x) + 1;
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+var x = {};
+++x;
+if (isNaN(x) !== true) {
+ $ERROR('#1: var x = {}; ++x; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = function(){return 1};
+++x;
+if (isNaN(x) !== true) {
+ $ERROR('#2: var x = function(){return 1}; ++x; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T1.js
new file mode 100644
index 000000000..304fefe64
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A4_T1;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x returns ToNumber(x) + 1;
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+var x = false;
+if (++x !== 0 + 1) {
+ $ERROR('#1: var x = false; ++x === 0 + 1. Actual: ' + (++x));
+}
+
+//CHECK#2
+var x = new Boolean(true);
+if (++x !== 1 + 1) {
+ $ERROR('#2: var x = new Boolean(true); ++x === 1 + 1. Actual: ' + (++x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T2.js
new file mode 100644
index 000000000..5f406a602
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A4_T2;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x returns ToNumber(x) + 1;
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+var x = 0.1;
+if (++x !== 0.1 + 1) {
+ $ERROR('#1: var x = 0.1; ++x === 0.1 + 1. Actual: ' + (++x));
+}
+
+//CHECK#2
+var x = new Number(-1.1);
+if (++x !== -1.1 + 1) {
+ $ERROR('#2: var x = new Number(-1.1); ++x === -1.1 + 1. Actual: ' + (++x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T3.js
new file mode 100644
index 000000000..9d3a3c734
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A4_T3;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x returns ToNumber(x) + 1;
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+var x = "1";
+if (++x !== 1 + 1) {
+ $ERROR('#1: var x = "1"; ++x === 1 + 1. Actual: ' + (++x));
+}
+
+//CHECK#2
+var x = "x";
+if (isNaN(++x) !== true) {
+ $ERROR('#2: var x = "x"; ++x === Not-a-Number. Actual: ' + (++x));
+}
+
+//CHECK#3
+var x = new String("-1");
+if (++x !== -1 + 1) {
+ $ERROR('#3: var x = new String("-1"); ++x === -1 + 1. Actual: ' + (++x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T4.js
new file mode 100644
index 000000000..19ec7fcf6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T4.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A4_T4;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x returns ToNumber(x) + 1;
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+var x;
+if (isNaN(++x) !== true) {
+ $ERROR('#1: var x; ++x === Not-a-Number. Actual: ' + (++x));
+}
+
+//CHECK#2
+var x = null;
+if (++x !== 1) {
+ $ERROR('#2: var x = null; ++x === 1. Actual: ' + (++x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T5.js
new file mode 100644
index 000000000..dee44bfe4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.4_Prefix_Increment_Operator/S11.4.4_A4_T5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.4_A4_T5;
+* @section: 11.4.4, 11.6.3;
+* @assertion: Operator ++x returns ToNumber(x) + 1;
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+var x = {};
+if (isNaN(++x) !== true) {
+ $ERROR('#1: var x = {}; ++x === Not-a-Number. Actual: ' + (++x));
+}
+
+//CHECK#2
+var x = function(){return 1};
+if (isNaN(++x) !== true) {
+ $ERROR('#2: var x = function(){return 1}; ++x === Not-a-Number. Actual: ' + (++x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A1.js
new file mode 100644
index 000000000..0a3f512bc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A1;
+* @section: 11.4.5, 11.6.3, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between "--" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("var x = 1; --\u0009x") !== 0) {
+ $ERROR('#1: var x = 1; --\\u0009x; x === 0. Actual: ' + (x));
+}
+
+//CHECK#2
+if (eval("var x = 1; --\u000Bx") !== 0) {
+ $ERROR('#2: var x = 1; --\\u000Bx; x === 0. Actual: ' + (x));
+}
+
+//CHECK#3
+if (eval("var x = 1; --\u000Cx") !== 0) {
+ $ERROR('#3: var x = 1; --\\u000Cx; x === 0. Actual: ' + (x));
+}
+
+//CHECK#4
+if (eval("var x = 1; --\u0020x") !== 0) {
+ $ERROR('#4: var x = 1; --\\u0020x; x === 0. Actual: ' + (x));
+}
+
+//CHECK#5
+if (eval("var x = 1; --\u00A0x") !== 0) {
+ $ERROR('#5: var x = 1; --\\u00A0x; x === 0. Actual: ' + (x));
+}
+
+//CHECK#6
+if (eval("var x = 1; --\u000Ax") !== 0) {
+ $ERROR('#6: var x = 1; --\\u000Ax; x === 0. Actual: ' + (x));
+}
+
+//CHECK#7
+if (eval("var x = 1; --\u000Dx") !== 0) {
+ $ERROR('#7: var x = 1; --\\u000Dx; x === 0. Actual: ' + (x));
+}
+
+//CHECK#8
+if (eval("var x = 1; --\u2028x") !== 0) {
+ $ERROR('#8: var x = 1; --\\u2028x; x === 0. Actual: ' + (x));
+}
+
+//CHECK#9
+if (eval("var x = 1; --\u2029x") !== 0) {
+ $ERROR('#9: var x = 1; --\\u2029x; x === 0. Actual: ' + (x));
+}
+
+//CHECK#10
+if (eval("var x = 1; --\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029x") !== 0) {
+ $ERROR('#10: var x = 1; --\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029x; x === 0. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T1.js
new file mode 100644
index 000000000..c22f7a592
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T1.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A2.1_T1;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x uses GetValue and PutValue;
+* @description: Type(x) is Reference and GetBase(x) is not null;
+*/
+
+//CHECK#1
+var x = 1;
+if (--x !== 1 - 1) {
+ $ERROR('#1: var x = 1; --x === 1 - 1. Actual: ' + (--x));
+} else {
+ if (x !== 1 - 1) {
+ $ERROR('#1: var x = 1; --x; x === 1 - 1. Actual: ' + (x));
+ }
+}
+
+//CHECK#2
+this.x = 1;
+if (--this.x !== 1 - 1) {
+ $ERROR('#2: this.x = 1; --this.x === 1 - 1. Actual: ' + (--this.x));
+} else {
+ if (this.x !== 1 - 1) {
+ $ERROR('#2: this.x = 1; --this.x; this.x === 1 - 1. Actual: ' + (this.x));
+ }
+}
+
+//CHECK#3
+var object = new Object();
+object.prop = 1;
+if (--object.prop !== 1 - 1) {
+ $ERROR('#3: var object = new Object(); object.prop = 1; --object.prop === 1 - 1. Actual: ' + (--object.prop));
+} else {
+ if (this.x !== 1 - 1) {
+ $ERROR('#3: var object = new Object(); object.prop = 1; --object.prop; object.prop === 1 - 1. Actual: ' + (object.prop));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T2.js
new file mode 100644
index 000000000..2b4e33646
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A2.1_T2;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x uses GetValue and PutValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ --x;
+ $ERROR('#1.1: --x throw ReferenceError. Actual: ' + (--x));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: --x throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T3.js
new file mode 100644
index 000000000..30901bae0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.1_T3.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A2.1_T3;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x uses GetValue and PutValue;
+* @description: If Type(x) is not Reference, throw ReferenceError (or SyntaxError);
+* @negative
+*/
+
+//CHECK#1
+try {
+ --1;
+ $ERROR('#1.1: --1 throw ReferenceError (or SyntaxError). Actual: ' + (--1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: --1 throw ReferenceError (or SyntaxError). Actual: ' + (e));
+ } else {
+ --1;
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.2_T1.js
new file mode 100644
index 000000000..365ab2577
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A2.2_T1.js
@@ -0,0 +1,103 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.4.5_A2.2_T1;
+ * @section: 11.4.5, 8.6.2.6;
+ * @assertion: Operator --x uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+if (--object !== 1 - 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; --object === 1 - 1. Actual: ' + (--object));
+} else {
+ if (object !== 1 - 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; --object; object === 1 - 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+if (--object !== 1 - 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; --object === 1 - 1. Actual: ' + (--object));
+} else {
+ if (object !== 1 - 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; --object; object === 1 - 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+if (--object !== 1 - 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; --object === 1 - 1. Actual: ' + (--object));
+} else {
+ if (object !== 1 - 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; --object; object === 1 - 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ if (--object !== 1 - 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; --object === 1 - 1. Actual: ' + (--object));
+ } else {
+ if (object !== 1 - 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; --object; object === 1 - 1. Actual: ' + (object));
+ }
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; --object not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; --object not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return 1}};
+if (--object !== 1 - 1) {
+ $ERROR('#5.1: var object = {toString: function() {return 1}}; --object === 1 - 1. Actual: ' + (--object));
+} else {
+ if (object !== 1 - 1) {
+ $ERROR('#5.2: var object = {toString: function() {return 1}}; --object; object === 1 - 1. Actual: ' + (object));
+ }
+}
+
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+if (--object !== 1 - 1) {
+ $ERROR('#6.1: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; --object === 1 - 1. Actual: ' + (--object));
+} else {
+ if (object !== 1 - 1) {
+ $ERROR('#6.2: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; --object; object === 1 - 1. Actual: ' + (object));
+ }
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ --object;
+ $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; --object throw "error". Actual: ' + (--object));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; --object throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ --object;
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; --object throw TypeError. Actual: ' + (--object));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; --object throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T1.js
new file mode 100644
index 000000000..280c47a3c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T1.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A3_T1;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x returns x = ToNumber(x) - 1;
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+var x = true;
+--x;
+if (x !== 1 - 1) {
+ $ERROR('#1: var x = true; --x; x === 1 - 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = new Boolean(false);
+--x;
+if (x !== 0 - 1) {
+ $ERROR('#2: var x = new Boolean(false); --x; x === 0 - 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T2.js
new file mode 100644
index 000000000..06eb04ce7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T2.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A3_T2;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x returns x = ToNumber(x) - 1;
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+var x = 0.1;
+--x;
+if (x !== 0.1 - 1) {
+ $ERROR('#1: var x = 0.1; --x; x === 0.1 - 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = new Number(-1.1);
+--x;
+if (x !== -1.1 - 1) {
+ $ERROR('#2: var x = new Number(-1.1); --x; x === -1.1 - 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T3.js
new file mode 100644
index 000000000..f5d7bd077
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A3_T3;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x returns x = ToNumber(x) - 1;
+* @description: Type(x) is primitive string or String object;
+*/
+
+//CHECK#1
+var x = "1";
+--x;
+if (x !== 1 - 1) {
+ $ERROR('#1: var x = "1"; --x; x === 1 - 1. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = "x";
+--x;
+if (isNaN(x) !== true) {
+ $ERROR('#2: var x = "x"; --x; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#3
+var x = new Number("-1");
+--x;
+if (x !== -1 - 1) {
+ $ERROR('#3: var x = new String("-1"); --x; x === -1 - 1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T4.js
new file mode 100644
index 000000000..60650b162
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T4.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A3_T4;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x returns x = ToNumber(x) - 1;
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+var x;
+--x;
+if (isNaN(x) !== true) {
+ $ERROR('#1: var x; --x; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = null;
+--x;
+if (x !== -1) {
+ $ERROR('#2: var x = null; --x; x === -1. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T5.js
new file mode 100644
index 000000000..625aeb03d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A3_T5.js
@@ -0,0 +1,23 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A3_T5;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x returns x = ToNumber(x) - 1;
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+var x = {};
+--x;
+if (isNaN(x) !== true) {
+ $ERROR('#1: var x = {}; --x; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = function(){return 1};
+--x;
+if (isNaN(x) !== true) {
+ $ERROR('#2: var x = function(){return 1}; --x; x === Not-a-Number. Actual: ' + (x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T1.js
new file mode 100644
index 000000000..108dc2cde
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A4_T1;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x returns ToNumber(x) - 1;
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+var x = true;
+if (--x !== 1 - 1) {
+ $ERROR('#1: var x = true; --x === 1 - 1. Actual: ' + (--x));
+}
+
+//CHECK#2
+var x = new Boolean(false);
+if (--x !== 0 - 1) {
+ $ERROR('#2: var x = new Boolean(false); --x === 0 - 1. Actual: ' + (--x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T2.js
new file mode 100644
index 000000000..55c8d1890
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A4_T2;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x returns ToNumber(x) - 1;
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+var x = 0.1;
+if (--x !== 0.1 - 1) {
+ $ERROR('#1: var x = 0.1; --x === 0.1 - 1. Actual: ' + (--x));
+}
+
+//CHECK#2
+var x = new Number(-1.1);
+if (--x !== -1.1 - 1) {
+ $ERROR('#2: var x = new Number(-1.1); --x === -1.1- 1. Actual: ' + (--x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T3.js
new file mode 100644
index 000000000..dc33d235e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T3.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A4_T3;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x returns ToNumber(x) - 1;
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+var x = "1";
+if (--x !== 1 - 1) {
+ $ERROR('#1: var x = "1"; --x === 1 - 1. Actual: ' + (--x));
+}
+
+//CHECK#2
+var x = "x";
+if (isNaN(--x) !== true) {
+ $ERROR('#2: var x = "x"; --x === Not-a-Number. Actual: ' + (--x));
+}
+
+//CHECK#3
+var x = new String("-1");
+if (--x !== -1 - 1) {
+ $ERROR('#3: var x = new String("-1"); --x === -1 - 1. Actual: ' + (--x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T4.js
new file mode 100644
index 000000000..d2286fa1c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T4.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A4_T4;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x returns ToNumber(x) - 1;
+* @description: Type(x) is undefined or null;
+*/
+
+
+//CHECK#1
+var x;
+if (isNaN(--x) !== true) {
+ $ERROR('#1: var x; --x; x === Not-a-Number. Actual: ' + (x));
+}
+
+//CHECK#2
+var x = null;
+if (--x !== -1) {
+ $ERROR('#2: var x = null; --x === -1. Actual: ' + (--x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T5.js
new file mode 100644
index 000000000..53be1d0db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.5_Prefix_Decrement_Operator/S11.4.5_A4_T5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.5_A4_T5;
+* @section: 11.4.5, 11.6.3;
+* @assertion: Operator --x returns ToNumber(x) - 1;
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+var x = {};
+if (isNaN(--x) !== true) {
+ $ERROR('#1: var x = {}; --x === Not-a-Number. Actual: ' + (--x));
+}
+
+//CHECK#2
+var x = function(){return 1};
+if (isNaN(--x) !== true) {
+ $ERROR('#2: var x = function(){return 1}; --x === Not-a-Number. Actual: ' + (--x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A1.js
new file mode 100644
index 000000000..aeb9636fc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.6_A1;
+* @section: 11.4.6, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between "+" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("+\u00091") !== 1) {
+ $ERROR('#1: +\\u00091 === 1');
+}
+
+//CHECK#2
+if (eval("+\u000B1") !== 1) {
+ $ERROR('#2: +\\u000B1 === 1');
+}
+
+//CHECK#3
+if (eval("+\u000C1") !== 1) {
+ $ERROR('#3: +\\u000C1 === 1');
+}
+
+//CHECK#4
+if (eval("+\u00201") !== 1) {
+ $ERROR('#4: +\\u0020 === 1');
+}
+
+//CHECK#5
+if (eval("+\u00A01") !== 1) {
+ $ERROR('#5: +\\u00A01 === 1');
+}
+
+//CHECK#6
+if (eval("+\u000A1") !== 1) {
+ $ERROR('#6: +\\u000A1 === 1');
+}
+
+//CHECK#7
+if (eval("+\u000D1") !== 1) {
+ $ERROR('#7: +\\u000D1 === 1');
+}
+
+//CHECK#8
+if (eval("+\u20281") !== 1) {
+ $ERROR('#8: +\\u20281 === 1');
+}
+
+//CHECK#9
+if (eval("+\u20291") !== 1) {
+ $ERROR('#9: +\\u20291 === 1');
+}
+
+//CHECK#10
+if (eval("+\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== 1) {
+ $ERROR('#10: +\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.1_T1.js
new file mode 100644
index 000000000..a703e0ff1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.1_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.6_A2.1_T1;
+* @section: 11.4.6;
+* @assertion: Operator +x uses GetValue;
+* @description: Either Type(x) is not Reference or GetBase(x) is not null;
+*/
+
+//CHECK#1
+if (+1 !== 1) {
+ $ERROR('#1: +1 === 1. Actual: ' + (+1));
+}
+
+//CHECK#2
+if (+(+1) !== 1) {
+ $ERROR('#2: +(+1) === -1. Actual: ' + (+(+1)));
+}
+
+//CHECK#3
+var x = 1;
+if (+x !== 1) {
+ $ERROR('#3: var x = +1; -x === 1. Actual: ' + (-x));
+}
+
+//CHECK#4
+var x = 1;
+if (+(+x) !== 1) {
+ $ERROR('#4: var x = 1; +(+x) === 1. Actual: ' + (+(+x)));
+}
+
+//CHECK#5
+var object = new Object();
+object.prop = 1;
+if (+object.prop !== 1) {
+ $ERROR('#5: var object = new Object(); object.prop = 1; +object.prop === 1. Actual: ' + (+object.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.1_T2.js
new file mode 100644
index 000000000..befd6666c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.6_A2.1_T2;
+* @section: 11.4.6;
+* @assertion: Operator +x uses GetValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ +x;
+ $ERROR('#1.1: +x throw ReferenceError. Actual: ' + (+x));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: +x throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.2_T1.js
new file mode 100644
index 000000000..c6a9dabdd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A2.2_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.4.6_A2.2_T1;
+ * @section: 11.4.6, 8.6.2.6;
+ * @assertion: Operator +x uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+if (+object !== 1) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; +object === 1. Actual: ' + (+object));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+if (+object !== 1) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; +object === 1. Actual: ' + (+object));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+if (+object !== 1) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; +object === 1. Actual: ' + (+object));
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ if (+object !== 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; +object === 1. Actual: ' + (+object));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; +object not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; +object not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return 1}};
+if (+object !== 1) {
+ $ERROR('#5: var object = {toString: function() {return 1}}; +object === 1. Actual: ' + (+object));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+if (+object !== 1) {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; +object === 1. Actual: ' + (+object));
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ +object;
+ $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; +object throw "error". Actual: ' + (+object));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; +object throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ +object;
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; +object throw TypeError. Actual: ' + (+object));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; +object throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T1.js
new file mode 100644
index 000000000..35d2af330
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.6_A3_T1;
+* @section: 11.4.6;
+* @assertion: Operator +x returns ToNumber(x);
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+if (+false !== 0) {
+ $ERROR('#1: +false === 0. Actual: ' + (+false));
+}
+
+//CHECK#2
+if (+new Boolean(true) !== 1) {
+ $ERROR('#2: +new Boolean(true) === 1. Actual: ' + (+new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T2.js
new file mode 100644
index 000000000..860f6e333
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.6_A3_T2;
+* @section: 11.4.6;
+* @assertion: Operator +x returns ToNumber(x);
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+if (+0.1 !== 0.1) {
+ $ERROR('#1: +0.1 === 0.1. Actual: ' + (+0.1));
+}
+
+//CHECK#2
+if (+new Number(-1.1) !== -1.1) {
+ $ERROR('#2: +new Number(-1.1) === -1.1. Actual: ' + (+new Number(-1.1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T3.js
new file mode 100644
index 000000000..40c2fa970
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T3.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.6_A3_T3;
+* @section: 11.4.6;
+* @assertion: Operator +x returns ToNumber(x);
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+if (+"1" !== 1) {
+ $ERROR('#1: +"1" === 1. Actual: ' + (+"1"));
+}
+
+//CHECK#2
+if (isNaN(+"x") !== true) {
+ $ERROR('#2: +"x" === Not-a-Number. Actual: ' + (+"x"));
+}
+
+//CHECK#3
+if (+new Number("-1") !== -1) {
+ $ERROR('#3: +new String("-1") === -1. Actual: ' + (+new String("-1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T4.js
new file mode 100644
index 000000000..fa2f16602
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.6_A3_T4;
+* @section: 11.4.6;
+* @assertion: Operator +x returns ToNumber(x);
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+if (isNaN(+void 0) !== true) {
+ $ERROR('#1: +void 0 === Not-a-Number. Actual: ' + (+void 0));
+}
+
+//CHECK#2
+if (+null !== 0) {
+ $ERROR('#2: +null === 0. Actual: ' + (+null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T5.js
new file mode 100644
index 000000000..78c89c941
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.6_Unary_plus_Operator/S11.4.6_A3_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.6_A3_T5;
+* @section: 11.4.6;
+* @assertion: Operator +x returns ToNumber(x);
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+if (isNaN(+{}) !== true) {
+ $ERROR('#1: +{} === Not-a-Number. Actual: ' + (+{}));
+}
+
+//CHECK#2
+if (isNaN(+function(){return 1}) !== true) {
+ $ERROR('#2: +function(){return 1} === Not-a-Number. Actual: ' + (+function(){return 1}));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A1.js
new file mode 100644
index 000000000..0951fa297
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.7_A1;
+* @section: 11.4.7, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between "-" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("-\u00091") !== -1) {
+ $ERROR('#1: -\\u00091 === -1');
+}
+
+//CHECK#2
+if (eval("-\u000B1") !== -1) {
+ $ERROR('#2: -\\u000B1 === -1');
+}
+
+//CHECK#3
+if (eval("-\u000C1") !== -1) {
+ $ERROR('#3: -\\u000C1 === -1');
+}
+
+//CHECK#4
+if (eval("-\u00201") !== -1) {
+ $ERROR('#4: -\\u0020 === -1');
+}
+
+//CHECK#5
+if (eval("-\u00A01") !== -1) {
+ $ERROR('#5: -\\u00A01 === -1');
+}
+
+//CHECK#6
+if (eval("-\u000A1") !== -1) {
+ $ERROR('#6: -\\u000A1 === -1');
+}
+
+//CHECK#7
+if (eval("-\u000D1") !== -1) {
+ $ERROR('#7: -\\u000D1 === -1');
+}
+
+//CHECK#8
+if (eval("-\u20281") !== -1) {
+ $ERROR('#8: -\\u20281 === -1');
+}
+
+//CHECK#9
+if (eval("-\u20291") !== -1) {
+ $ERROR('#9: -\\u20291 === -1');
+}
+
+//CHECK#10
+if (eval("-\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== -1) {
+ $ERROR('#10: -\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === -1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.1_T1.js
new file mode 100644
index 000000000..22a322348
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.1_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.7_A2.1_T1;
+* @section: 11.4.7;
+* @assertion: Operator -x uses GetValue;
+* @description: Either Type(x) is not Reference or GetBase(x) is not null;
+*/
+
+//CHECK#1
+if (-1 !== -1) {
+ $ERROR('#1: -1 === -1. Actual: ' + (-1));
+}
+
+//CHECK#2
+if (-(-1) !== 1) {
+ $ERROR('#2: -(-1) === -1. Actual: ' + (-(-1)));
+}
+
+//CHECK#3
+var x = -1;
+if (-x !== 1) {
+ $ERROR('#3: var x = -1; -x === 1. Actual: ' + (-x));
+}
+
+//CHECK#4
+var x = -1;
+if (-(-x) !== -1) {
+ $ERROR('#4: var x = -1; -(-x) === -1. Actual: ' + (-(-x)));
+}
+
+//CHECK#5
+var object = new Object();
+object.prop = 1;
+if (-object.prop !== -1) {
+ $ERROR('#5: var object = new Object(); object.prop = -1; -object.prop === -1. Actual: ' + (-object.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.1_T2.js
new file mode 100644
index 000000000..6067d4078
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.7_A2.1_T2;
+* @section: 11.4.7;
+* @assertion: Operator -x uses GetValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ -x;
+ $ERROR('#1.1: -x throw ReferenceError. Actual: ' + (-x));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: -x throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.2_T1.js
new file mode 100644
index 000000000..62445055b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A2.2_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.4.7_A2.2_T1;
+ * @section: 11.4.7, 8.6.2.6;
+ * @assertion: Operator -x uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+var object = {valueOf: function() {return -1}};
+if (-object !== 1) {
+ $ERROR('#1: var object = {valueOf: function() {return -1}}; -object === 1. Actual: ' + (-object));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return -1}, toString: function() {return 0}};
+if (-object !== 1) {
+ $ERROR('#2: var object = {valueOf: function() {return -1}, toString: function() {return 0}}; -object === 1. Actual: ' + (-object));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return -1}, toString: function() {return {}}};
+if (-object !== 1) {
+ $ERROR('#3: var object = {valueOf: function() {return -1}, toString: function() {return {}}}; -object === 1. Actual: ' + (-object));
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {return -1}, toString: function() {throw "error"}};
+ if (-object !== 1) {
+ $ERROR('#4.1: var object = {valueOf: function() {return -1}, toString: function() {throw "error"}}; -object === 1. Actual: ' + (-object));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {return -1}, toString: function() {throw "error"}}; -object not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {return -1}, toString: function() {throw "error"}}; -object not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return -1}};
+if (-object !== 1) {
+ $ERROR('#5.1: var object = {toString: function() {return -1}}; -object === 1. Actual: ' + (-object));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return -1}}
+if (-object !== 1) {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return -1}}; -object === 1. Actual: ' + (-object));
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return -1}};
+ -object;
+ $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return -1}}; -object throw "error". Actual: ' + (-object));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return -1}}; -object throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ -object;
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; -object throw TypeError. Actual: ' + (-object));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; -object throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T1.js
new file mode 100644
index 000000000..c988818da
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T1.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.7_A3_T1;
+* @section: 11.4.7;
+* @assertion: Operator -x returns -ToNumber(x);
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+if (-false !== 0) {
+ $ERROR('#1: -false === 0. Actual: ' + (-false));
+}
+
+//CHECK#2
+if (-new Boolean(true) !== -1) {
+ $ERROR('#2: -new Boolean(true) === -1. Actual: ' + (-new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T2.js
new file mode 100644
index 000000000..bf763effe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.7_A3_T2;
+* @section: 11.4.7;
+* @assertion: Operator -x returns -ToNumber(x);
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+if (-(1) !== -1) {
+ $ERROR('#1: -(1) === -1. Actual: ' + (-(1)));
+}
+
+//CHECK#2
+if (-new Number(-1) !== 1) {
+ $ERROR('#2: -new Number(-1) === 1. Actual: ' + (-new Number(-1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T3.js
new file mode 100644
index 000000000..d6be7cc99
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T3.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.7_A3_T3;
+* @section: 11.4.7;
+* @assertion: Operator -x returns -ToNumber(x);
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+if (-"1" !== -1) {
+ $ERROR('#1: -"1" === -1. Actual: ' + (-"1"));
+}
+
+//CHECK#2
+if (isNaN(-"x") !== true) {
+ $ERROR('#2: -"x" === Not-a-Number. Actual: ' + (-"x"));
+}
+
+//CHECK#3
+if (-new String("-1") !== 1) {
+ $ERROR('#3: -new String("-1") === 1. Actual: ' + (-new String("-1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T4.js
new file mode 100644
index 000000000..1877387ed
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.7_A3_T4;
+* @section: 11.4.7;
+* @assertion: Operator -x returns -ToNumber(x);
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+if (isNaN(-void 0) !== true) {
+ $ERROR('#1: +void 0 === Not-a-Number. Actual: ' + (+void 0));
+}
+
+//CHECK#2
+if (-null !== 0) {
+ $ERROR('#2: +null === 0. Actual: ' + (+null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T5.js
new file mode 100644
index 000000000..0a63fa917
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A3_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.7_A3_T5;
+* @section: 11.4.7;
+* @assertion: Operator -x returns -ToNumber(x);
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+if (isNaN(-{}) !== true) {
+ $ERROR('#1: -{} === Not-a-Number. Actual: ' + (-{}));
+}
+
+//CHECK#2
+if (isNaN(-function(){return 1}) !== true) {
+ $ERROR('#2: -function(){return 1} === Not-a-Number. Actual: ' + (-function(){return 1}));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A4.1.js
new file mode 100644
index 000000000..6a1fa75c2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A4.1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.7_A4.1;
+* @section: 11.4.7;
+* @assertion: If x is NaN, operator -x returns NaN;
+* @description: Checking NaN;
+*/
+
+//CHECK#1
+if (isNaN(-NaN) !== true) {
+ $ERROR('#1: -NaN === Not-a-Number. Actual: ' + (-NaN));
+}
+
+//CHECK#2
+var x = NaN;
+if (isNaN(-x) != true) {
+ $ERROR('#2: var x = NaN; -x === Not-a-Number. Actual: ' + (-x));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A4.2.js
new file mode 100644
index 000000000..8a6bd8005
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.7_Unary_minus_Operator/S11.4.7_A4.2.js
@@ -0,0 +1,32 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.7_A4.2;
+* @section: 11.4.7;
+* @assertion: Negating +0 produces -0, negating -0 produces +0;
+* @description: Checking Infinity;
+*/
+
+//CHECK#1
+var x = 0;
+x = -x;
+if (x !== -0) {
+ $ERROR('#1.1: var x = 0; x = -x; x === 0. Actual: ' + (x));
+} else {
+ if (1/x !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#1.2: var x = 0; x = -x; x === - 0. Actual: +0');
+ }
+}
+
+//CHECK#2
+var x = -0;
+x = -x;
+if (x !== 0) {
+ $ERROR('#2.1: var x = -0; x = -x; x === 0. Actual: ' + (x));
+} else {
+ if (1/x !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: var x = -0; x = -x; x === + 0. Actual: -0');
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A1.js
new file mode 100644
index 000000000..d4dc1ead9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.8_A1;
+* @section: 11.4.8, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between "~" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("~\u00090") !== -1) {
+ $ERROR('#0: ~\\u00090 === -1');
+}
+
+//CHECK#2
+if (eval("~\u000B0") !== -1) {
+ $ERROR('#2: ~\\u000B0 === -1');
+}
+
+//CHECK#3
+if (eval("~\u000C0") !== -1) {
+ $ERROR('#3: ~\\u000C0 === -1');
+}
+
+//CHECK#4
+if (eval("~\u00200") !== -1) {
+ $ERROR('#4: ~\\u0020 === -1');
+}
+
+//CHECK#5
+if (eval("~\u00A00") !== -1) {
+ $ERROR('#5: ~\\u00A00 === -1');
+}
+
+//CHECK#6
+if (eval("~\u000A0") !== -1) {
+ $ERROR('#6: ~\\u000A0 === -1');
+}
+
+//CHECK#7
+if (eval("~\u000D0") !== -1) {
+ $ERROR('#7: ~\\u000D0 === -1');
+}
+
+//CHECK#8
+if (eval("~\u20280") !== -1) {
+ $ERROR('#8: ~\\u20280 === -1');
+}
+
+//CHECK#9
+if (eval("~\u20290") !== -1) {
+ $ERROR('#9: ~\\u20290 === -1');
+}
+
+//CHECK#10
+if (eval("~\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20290") !== -1) {
+ $ERROR('#10: ~\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20290 === -1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.1_T1.js
new file mode 100644
index 000000000..39107ff07
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.1_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.8_A2.1_T1;
+* @section: 11.4.8;
+* @assertion: Operator ~x uses GetValue;
+* @description: Either Type(x) is not Reference or GetBase(x) is not null;
+*/
+
+//CHECK#1
+if (~0 !== -1) {
+ $ERROR('#1: ~0 === -1. Actual: ' + (~0));
+}
+
+//CHECK#2
+if (~(~0) !== 0) {
+ $ERROR('#2: ~(~0) === 0. Actual: ' + (~(~0)));
+}
+
+//CHECK#3
+var x = 0;
+if (~x !== -1) {
+ $ERROR('#3: var x = 0; ~x === -1. Actual: ' + (~x));
+}
+
+//CHECK#4
+var x = 0;
+if (~(~x) !== 0) {
+ $ERROR('#4: var x = 0; ~(~x) === 0. Actual: ' + (~(~x)));
+}
+
+//CHECK#5
+var object = new Object();
+object.prop = 0;
+if (~object.prop !== -1) {
+ $ERROR('#5: var object = new Object(); object.prop = 0; ~object.prop === -1. Actual: ' + (~object.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.1_T2.js
new file mode 100644
index 000000000..c55ac7a4b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.8_A2.1_T2;
+* @section: 11.4.8;
+* @assertion: Operator ~x uses GetValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ ~x;
+ $ERROR('#1.1: ~x throw ReferenceError. Actual: ' + (~x));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: ~x throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.2_T1.js
new file mode 100644
index 000000000..03fff147a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A2.2_T1.js
@@ -0,0 +1,78 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.4.8_A2.2_T1;
+ * @section: 11.4.8, 8.6.2.6;
+ * @assertion: Operator ~x uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+if (~object !== -2) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; ~object === -2. Actual: ' + (~object));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+if (~object !== -2) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; ~object === -2. Actual: ' + (~object));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+if (~object !== -2) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; ~object === -2. Actual: ' + (~object));
+}
+
+//CHECK#4
+try {
+ var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+ if (~object !== -2) {
+ $ERROR('#4.1: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ~object === -2. Actual: ' + (~object));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ~object not throw "error"');
+ } else {
+ $ERROR('#4.3: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; ~object not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+var object = {toString: function() {return 1}};
+if (~object !== -2) {
+ $ERROR('#5: var object = {toString: function() {return 1}}; ~object === -2. Actual: ' + (~object));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+if (~object !== -2) {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; ~object === -2. Actual: ' + (~object));
+}
+
+//CHECK#7
+try {
+ var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ ~object;
+ $ERROR('#7.1: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; ~object throw "error". Actual: ' + (~object));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; ~object throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+ ~object;
+ $ERROR('#8.1: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; ~object throw TypeError. Actual: ' + (~object));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; ~object throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T1.js
new file mode 100644
index 000000000..6b7d15f22
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.8_A3_T1;
+* @section: 11.4.8;
+* @assertion: Operator ~x returns ~ToInt32(x);
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+if (~false !== -1) {
+ $ERROR('#1: ~false === -1. Actual: ' + (~false));
+}
+
+//CHECK#2
+if (~new Boolean(true) !== -2) {
+ $ERROR('#2: ~new Boolean(true) === -2. Actual: ' + (~new Boolean(true)));
+}
+
+//CHECK#3
+if (~new Boolean(false) !== -1) {
+ $ERROR('#3: ~new Boolean(false) === -1. Actual: ' + (~new Boolean(false)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T2.js
new file mode 100644
index 000000000..9b6abb6bd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T2.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.8_A3_T2;
+* @section: 11.4.8;
+* @assertion: Operator ~x returns ~ToInt32(x);
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+if (~0.1 !== -1) {
+ $ERROR('#1: ~0.1 === -1. Actual: ' + (~0.1));
+}
+
+//CHECK#2
+if (~new Number(-0.1) !== -1) {
+ $ERROR('#2: ~new Number(-0.1) === -1. Actual: ' + (~new Number(-0.1)));
+}
+
+//CHECK#3
+if (~NaN !== -1) {
+ $ERROR('#3: ~NaN === -1. Actual: ' + (~NaN));
+}
+
+//CHECK#4
+if (~new Number(NaN) !== -1) {
+ $ERROR('#4: ~new Number(NaN) === -1. Actual: ' + (~new Number(NaN)));
+}
+
+//CHECK#5
+if (~1 !== -2) {
+ $ERROR('#5: ~1 === -2. Actual: ' + (~1));
+}
+
+//CHECK#6
+if (~new Number(-2) !== 1) {
+ $ERROR('#6: ~new Number(-2) === 1. Actual: ' + (~new Number(-2)));
+}
+
+//CHECK#7
+if (~Infinity !== -1) {
+ $ERROR('#7: ~Infinity === -1. Actual: ' + (~Infinity));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T3.js
new file mode 100644
index 000000000..e17e797bd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T3.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.8_A3_T3;
+* @section: 11.4.8;
+* @assertion: Operator ~x returns ~ToInt32(x);
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+if (~"1" !== -2) {
+ $ERROR('#1: ~"1" === -2. Actual: ' + (~"1"));
+}
+
+//CHECK#2
+if (~new String("0") !== -1) {
+ $ERROR('#2: ~new String("0") === -1. Actual: ' + (~new String("0")));
+}
+
+//CHECK#3
+if (~"x" !== -1) {
+ $ERROR('#3: ~"x" === -1. Actual: ' + (~"x"));
+}
+
+//CHECK#4
+if (~"" !== -1) {
+ $ERROR('#4: ~"" === -1. Actual: ' + (~""));
+}
+
+//CHECK#5
+if (~new String("-2") !== 1) {
+ $ERROR('#5: ~new String("-2") === 1. Actual: ' + (~new String("-2")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T4.js
new file mode 100644
index 000000000..8dd87158c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.8_A3_T4;
+* @section: 11.4.8;
+* @assertion: Operator ~x returns ~ToInt32(x);
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+if (~void 0 !== -1) {
+ $ERROR('#1: ~void 0 === -1. Actual: ' + (~void 0));
+}
+
+//CHECK#2
+if (~null !== -1) {
+ $ERROR('#2: ~null === -1. Actual: ' + (~null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T5.js
new file mode 100644
index 000000000..0dc107d5d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.8_Bitwise_NOT_Operator/S11.4.8_A3_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.8_A3_T5;
+* @section: 11.4.8;
+* @assertion: Operator ~x returns ~ToInt32(x);
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+if (~({}) !== -1) {
+ $ERROR('#1: ~({}) === -1. Actual: ' + (~({})));
+}
+
+//CHECK#2
+if (~(function(){return 1}) !== -1) {
+ $ERROR('#2: ~(function(){return 1}) === -1. Actual: ' + (~(function(){return 1})));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A1.js
new file mode 100644
index 000000000..49803af79
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.9_A1;
+* @section: 11.4.9, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between "!" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("!\u0009true") !== false) {
+ $ERROR('#true: !\\u0009true === false');
+}
+
+//CHECK#2
+if (eval("!\u000Btrue") !== false) {
+ $ERROR('#2: !\\u000Btrue === false');
+}
+
+//CHECK#3
+if (eval("!\u000Ctrue") !== false) {
+ $ERROR('#3: !\\u000Ctrue === false');
+}
+
+//CHECK#4
+if (eval("!\u0020true") !== false) {
+ $ERROR('#4: !\\u0020 === false');
+}
+
+//CHECK#5
+if (eval("!\u00A0true") !== false) {
+ $ERROR('#5: !\\u00A0true === false');
+}
+
+//CHECK#6
+if (eval("!\u000Atrue") !== false) {
+ $ERROR('#6: !\\u000Atrue === false');
+}
+
+//CHECK#7
+if (eval("!\u000Dtrue") !== false) {
+ $ERROR('#7: !\\u000Dtrue === false');
+}
+
+//CHECK#8
+if (eval("!\u2028true") !== false) {
+ $ERROR('#8: !\\u2028true === false');
+}
+
+//CHECK#9
+if (eval("!\u2029true") !== false) {
+ $ERROR('#9: !\\u2029true === false');
+}
+
+//CHECK#10
+if (eval("!\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029true") !== false) {
+ $ERROR('#10: !\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029true === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.1_T1.js
new file mode 100644
index 000000000..f5a4cde73
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.1_T1.js
@@ -0,0 +1,38 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.9_A2.1_T1;
+* @section: 11.4.9;
+* @assertion: Operator !x uses GetValue;
+* @description: Either Type(x) is not Reference or GetBase(x) is not null;
+*/
+
+//CHECK#1
+if (!true !== false) {
+ $ERROR('#1: !true === false');
+}
+
+//CHECK#2
+if (!(!true) !== true) {
+ $ERROR('#2: !(!true) === true');
+}
+
+//CHECK#3
+var x = true;
+if (!x !== false) {
+ $ERROR('#3: var x = true; !x === false');
+}
+
+//CHECK#4
+var x = true;
+if (!(!x) !== true) {
+ $ERROR('#4: var x = true; !(!x) === true');
+}
+
+//CHECK#5
+var object = new Object();
+object.prop = true;
+if (!object.prop !== false) {
+ $ERROR('#5: var object = new Object(); object.prop = true; !object.prop === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.1_T2.js
new file mode 100644
index 000000000..dfa6ed469
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.9_A2.1_T2;
+* @section: 11.4.9;
+* @assertion: Operator !x uses GetValue;
+* @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ !x;
+ $ERROR('#1.1: !x throw ReferenceError. Actual: ' + (!x));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: !x throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.2_T1.js
new file mode 100644
index 000000000..dce742a7e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A2.2_T1.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.4.9_A2.2_T1;
+ * @section: 11.4.9, 8.6.2.6;
+ * @assertion: Operator !x uses [[Default Value]];
+ * @description: If Type(value) is Object, return false;
+ */
+
+//CHECK#1
+var object = {valueOf: function() {return 1}};
+if (!object !== false) {
+ $ERROR('#1: var object = {valueOf: function() {return 1}}; !object === false. Actual: ' + (!object));
+}
+
+//CHECK#2
+var object = {valueOf: function() {return 1}, toString: function() {return 0}};
+if (!object !== false) {
+ $ERROR('#2: var object = {valueOf: function() {return 1}, toString: function() {return 0}}; !object === false. Actual: ' + (!object));
+}
+
+//CHECK#3
+var object = {valueOf: function() {return 1}, toString: function() {return {}}};
+if (!object !== false) {
+ $ERROR('#3: var object = {valueOf: function() {return 1}, toString: function() {return {}}}; !object === false. Actual: ' + (!object));
+}
+
+//CHECK#4
+var object = {valueOf: function() {return 1}, toString: function() {throw "error"}};
+if (!object !== false) {
+ $ERROR('#4: var object = {valueOf: function() {return 1}, toString: function() {throw "error"}}; !object === false. Actual: ' + (!object));
+}
+
+//CHECK#5
+var object = {toString: function() {return 1}};
+if (!object !== false) {
+ $ERROR('#5: var object = {toString: function() {return 1}}; !object === false. Actual: ' + (!object));
+}
+
+//CHECK#6
+var object = {valueOf: function() {return {}}, toString: function() {return 1}}
+if (!object !== false) {
+ $ERROR('#6: var object = {valueOf: function() {return {}}, toString: function() {return 1}}; !object === false. Actual: ' + (!object));
+}
+
+//CHECK#7
+var object = {valueOf: function() {throw "error"}, toString: function() {return 1}};
+if (!object !== false) {
+ $ERROR('#7: var object = {valueOf: function() {throw "error"}, toString: function() {return 1}}; !object === false. Actual: ' + (!object));
+}
+
+//CHECK#8
+var object = {valueOf: function() {return {}}, toString: function() {return {}}};
+if (!object !== false) {
+ $ERROR('#8: var object = {valueOf: function() {return {}}, toString: function() {return {}}}; !object === false. Actual: ' + (!object));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T1.js
new file mode 100644
index 000000000..76b1284c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.9_A3_T1;
+* @section: 11.4.9;
+* @assertion: Operator !x returns !ToBoolean(x);
+* @description: Type(x) is boolean primitive or Boolean object;
+*/
+
+//CHECK#1
+if (!false !== true) {
+ $ERROR('#1: !false === true');
+}
+
+//CHECK#2
+if (!new Boolean(true) !== false) {
+ $ERROR('#2: !new Boolean(true) === false');
+}
+
+//CHECK#3
+if (!new Boolean(false) !== false) {
+ $ERROR('#3: !new Boolean(false) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T2.js
new file mode 100644
index 000000000..8a1ec70b6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T2.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.9_A3_T2;
+* @section: 11.4.9;
+* @assertion: Operator !x returns !ToBoolean(x);
+* @description: Type(x) is number primitive or Number object;
+*/
+
+//CHECK#1
+if (!0.1 !== false) {
+ $ERROR('#1: !0.1 === false');
+}
+
+//CHECK#2
+if (!new Number(-0.1) !== false) {
+ $ERROR('#2: !new Number(-0.1) === false');
+}
+
+//CHECK#3
+if (!NaN !== true) {
+ $ERROR('#3: !NaN === true');
+}
+
+//CHECK#4
+if (!new Number(NaN) !== false) {
+ $ERROR('#4: !new Number(NaN) === false');
+}
+
+//CHECK#5
+if (!0 !== true) {
+ $ERROR('#5: !0 === true');
+}
+
+//CHECK#6
+if (!new Number(0) !== false) {
+ $ERROR('#6: !new Number(0) === false');
+}
+
+//CHECK#7
+if (!Infinity !== false) {
+ $ERROR('#7: !Infinity === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T3.js
new file mode 100644
index 000000000..b894c4d1e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T3.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.9_A3_T3;
+* @section: 11.4.9;
+* @assertion: Operator !x returns !ToBoolean(x);
+* @description: Type(x) is string primitive or String object;
+*/
+
+//CHECK#1
+if (!"1" !== false) {
+ $ERROR('#1: !"1" === false');
+}
+
+//CHECK#2
+if (!new String("0") !== false) {
+ $ERROR('#2: !new String("0") === false');
+}
+
+//CHECK#3
+if (!"x" !== false) {
+ $ERROR('#3: !"x" === false');
+}
+
+//CHECK#4
+if (!"" !== true) {
+ $ERROR('#4: !"" === true');
+}
+
+//CHECK#5
+if (!new String("") !== false) {
+ $ERROR('#5: !new String("") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T4.js
new file mode 100644
index 000000000..8ff189aca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T4.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.9_A3_T4;
+* @section: 11.4.9;
+* @assertion: Operator !x returns !ToBoolean(x);
+* @description: Type(x) is undefined or null;
+*/
+
+//CHECK#1
+if (!void 0 !== true) {
+ $ERROR('#1: !void 0 === true');
+}
+
+//CHECK#2
+if (!null !== true) {
+ $ERROR('#2: !null === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T5.js
new file mode 100644
index 000000000..6e484eab9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.4_Unary_Operators/11.4.9_Logical_NOT_Operator/S11.4.9_A3_T5.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.4.9_A3_T5;
+* @section: 11.4.9;
+* @assertion: Operator !x returns !ToBoolean(x);
+* @description: Type(x) is Object object or Function object;
+*/
+
+//CHECK#1
+if ((!{}) !== false) {
+ $ERROR('#1: !({}) === false');
+}
+
+//CHECK#2
+if (!(function(){return 1}) !== false) {
+ $ERROR('#2: !(function(){return 1}) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A1.js
new file mode 100644
index 000000000..00f5b1da0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.5.1_A1;
+* @section: 11.5.1, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between MultiplicativeExpression and "*" or between "*" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("1\u0009*\u00091") !== 1) {
+ $ERROR('#1: 1\\u0009*\\u00091 === 1');
+}
+
+//CHECK#2
+if (eval("1\u000B*\u000B1") !== 1) {
+ $ERROR('#2: 1\\u000B*\\u000B1 === 1');
+}
+
+//CHECK#3
+if (eval("1\u000C*\u000C1") !== 1) {
+ $ERROR('#3: 1\\u000C*\\u000C1 === 1');
+}
+
+//CHECK#4
+if (eval("1\u0020*\u00201") !== 1) {
+ $ERROR('#4: 1\\u0020*\\u00201 === 1');
+}
+
+//CHECK#5
+if (eval("1\u00A0*\u00A01") !== 1) {
+ $ERROR('#5: 1\\u00A0*\\u00A01 === 1');
+}
+
+//CHECK#6
+if (eval("1\u000A*\u000A1") !== 1) {
+ $ERROR('#6: 1\\u000A*\\u000A1 === 1');
+}
+
+//CHECK#7
+if (eval("1\u000D*\u000D1") !== 1) {
+ $ERROR('#7: 1\\u000D*\\u000D1 === 1');
+}
+
+//CHECK#8
+if (eval("1\u2028*\u20281") !== 1) {
+ $ERROR('#8: 1\\u2028*\\u20281 === 1');
+}
+
+//CHECK#9
+if (eval("1\u2029*\u20291") !== 1) {
+ $ERROR('#9: 1\\u2029*\\u20291 === 1');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029*\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== 1) {
+ $ERROR('#10: 1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029*\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T1.js
new file mode 100644
index 000000000..0077525bd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A2.1_T1;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (1 * 1 !== 1) {
+ $ERROR('#1: 1 * 1 === 1. Actual: ' + (1 * 1));
+}
+
+//CHECK#2
+var x = 1;
+if (x * 1 !== 1) {
+ $ERROR('#2: var x = 1; x * 1 === 1. Actual: ' + (x * 1));
+}
+
+//CHECK#3
+var y = 1;
+if (1 * y !== 1) {
+ $ERROR('#3: var y = 1; 1 * y === 1. Actual: ' + (1 * y));
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if (x * y !== 1) {
+ $ERROR('#4: var x = 1; var y = 1; x * y === 1. Actual: ' + (x * y));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if (objectx.prop * objecty.prop !== 1) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; objectx.prop * objecty.prop === 1. Actual: ' + (objectx.prop * objecty.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T2.js
new file mode 100644
index 000000000..f7b55cafd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A2.1_T2;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x * 1;
+ $ERROR('#1.1: x * 1 throw ReferenceError. Actual: ' + (x * 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x * 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T3.js
new file mode 100644
index 000000000..57b3d049c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A2.1_T3;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 * y;
+ $ERROR('#1.1: 1 * y throw ReferenceError. Actual: ' + (1 * y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 * y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.2_T1.js
new file mode 100644
index 000000000..712271524
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A2.2_T1;
+ * @section: 11.5.1, 8.6.2.6;
+ * @assertion: Operator x * y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return 1}} * 1 !== 1) {
+ $ERROR('#1: {valueOf: function() {return 1}} * 1 === 1. Actual: ' + ({valueOf: function() {return 1}} * 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 1}, toString: function() {return 0}} * 1 !== 1) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 0}} * 1 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 0}} * 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 1}, toString: function() {return {}}} * 1 !== 1) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} * 1 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} * 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 1}, toString: function() {throw "error"}} * 1 !== 1) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} * 1 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} * 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 1}, toString: function() {throw "error"}} * 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 1}, toString: function() {throw "error"}} * 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 * {toString: function() {return 1}} !== 1) {
+ $ERROR('#5: 1 * {toString: function() {return 1}} === 1. Actual: ' + (1 * {toString: function() {return 1}}));
+}
+
+//CHECK#6
+if (1 * {valueOf: function() {return {}}, toString: function() {return 1}} !== 1) {
+ $ERROR('#6: 1 * {valueOf: function() {return {}}, toString: function() {return 1}} === 1. Actual: ' + (1 * {valueOf: function() {return {}}, toString: function() {return 1}}));
+}
+
+//CHECK#7
+try {
+ 1 * {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: 1 * {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (1 * {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 * {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 * {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 * {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 * {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 * {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.3_T1.js
new file mode 100644
index 000000000..c9a13f709
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A2.3_T1;
+ * @section: 11.5.1;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x * y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x * y throw "x". Actual: ' + (x * y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToNumber(first expression) is called first, and then ToNumber(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x * y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T1.js
new file mode 100644
index 000000000..541da82f8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A2.4_T1;
+ * @section: 11.5.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) * x !== 1) {
+ $ERROR('#1: var x = 0; (x = 1) * x === 1. Actual: ' + ((x = 1) * x));
+}
+
+//CHECK#2
+var x = 0;
+if (x * (x = 1) !== 0) {
+ $ERROR('#2: var x = 0; x * (x = 1) === 0. Actual: ' + (x * (x = 1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T2.js
new file mode 100644
index 000000000..7a4a9c244
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A2.4_T2;
+ * @section: 11.5.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw"
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() * y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() * y() throw "x". Actual: ' + (x() * y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() * y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T3.js
new file mode 100644
index 000000000..d7c618341
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A2.4_T3;
+ * @section: 11.5.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x * (x = 1);
+ $ERROR('#1.1: x * (x = 1) throw ReferenceError. Actual: ' + (x * (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x * (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) * y !== 1) {
+ $ERROR('#2: (y = 1) * y === 1. Actual: ' + ((y = 1) * y));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.1.js
new file mode 100644
index 000000000..8b4fffb14
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T1.1;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true * true !== 1) {
+ $ERROR('#1: true * true === 1. Actual: ' + (true * true));
+}
+
+//CHECK#2
+if (new Boolean(true) * true !== 1) {
+ $ERROR('#2: new Boolean(true) * true === 1. Actual: ' + (new Boolean(true) * true));
+}
+
+//CHECK#3
+if (true * new Boolean(true) !== 1) {
+ $ERROR('#3: true * new Boolean(true) === 1. Actual: ' + (true * new Boolean(true)));
+}
+
+//CHECK#4
+if (new Boolean(true) * new Boolean(true) !== 1) {
+ $ERROR('#4: new Boolean(true) * new Boolean(true) === 1. Actual: ' + (new Boolean(true) * new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.2.js
new file mode 100644
index 000000000..4c37922a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T1.2;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 * 1 !== 1) {
+ $ERROR('#1: 1 * 1 === 1. Actual: ' + (1 * 1));
+}
+
+//CHECK#2
+if (new Number(1) * 1 !== 1) {
+ $ERROR('#2: new Number(1) * 1 === 1. Actual: ' + (new Number(1) * 1));
+}
+
+//CHECK#3
+if (1 * new Number(1) !== 1) {
+ $ERROR('#3: 1 * new Number(1) === 1. Actual: ' + (1 * new Number(1)));
+}
+
+//CHECK#4
+if (new Number(1) * new Number(1) !== 1) {
+ $ERROR('#4: new Number(1) * new Number(1) === 1. Actual: ' + (new Number(1) * new Number(1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.3.js
new file mode 100644
index 000000000..e74258361
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T1.3;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" * "1" !== 1) {
+ $ERROR('#1: "1" * "1" === 1. Actual: ' + ("1" * "1"));
+}
+
+//CHECK#2
+if (new String("1") * "1" !== 1) {
+ $ERROR('#2: new String("1") * "1" === 1. Actual: ' + (new String("1") * "1"));
+}
+
+//CHECK#3
+if ("1" * new String("1") !== 1) {
+ $ERROR('#3: "1" * new String("1") === 1. Actual: ' + ("1" * new String("1")));
+}
+
+//CHECK#4
+if (new String("1") * new String("1") !== 1) {
+ $ERROR('#4: new String("1") * new String("1") === 1. Actual: ' + (new String("1") * new String("1")));
+}
+
+//CHECK#5
+if (isNaN("x" * "1") !== true) {
+ $ERROR('#5: "x" * "1" === Not-a-Number. Actual: ' + ("x" * "1"));
+}
+
+//CHECK#6
+if (isNaN("1" * "x") !== true) {
+ $ERROR('#6: "1" * "x" === Not-a-Number. Actual: ' + ("1" * "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.4.js
new file mode 100644
index 000000000..d014c08b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T1.4;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(null * undefined) !== true) {
+ $ERROR('#1: null * undefined === Not-a-Number. Actual: ' + (null * undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined * null) !== true) {
+ $ERROR('#2: undefined * null === Not-a-Number. Actual: ' + (undefined * null));
+}
+
+//CHECK#3
+if (isNaN(undefined * undefined) !== true) {
+ $ERROR('#3: undefined * undefined === Not-a-Number. Actual: ' + (undefined * undefined));
+}
+
+//CHECK#4
+if (null * null !== 0) {
+ $ERROR('#4: null * null === 0. Actual: ' + (null * null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.5.js
new file mode 100644
index 000000000..4f7b7271d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T1.5.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T1.5;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (isNaN({} * function(){return 1}) !== true) {
+ $ERROR('#1: {} * function(){return 1} === Not-a-Number. Actual: ' + ({} * function(){return 1}));
+}
+
+//CHECK#2
+if (isNaN(function(){return 1} * {}) !== true) {
+ $ERROR('#2: function(){return 1} * {} === Not-a-Number. Actual: ' + (function(){return 1} * {}));
+}
+
+//CHECK#3
+if (isNaN(function(){return 1} * function(){return 1}) !== true) {
+ $ERROR('#3: function(){return 1} * function(){return 1} === Not-a-Number. Actual: ' + (function(){return 1} * function(){return 1}));
+}
+
+//CHECK#4
+if (isNaN({} * {}) !== true) {
+ $ERROR('#4: {} * {} === Not-a-Number. Actual: ' + ({} * {}));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.1.js
new file mode 100644
index 000000000..566f5d9c4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T2.1;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Number (primitive and object);
+ */
+
+//CHECK#1
+if (true * 1 !== 1) {
+ $ERROR('#1: true * 1 === 1. Actual: ' + (true * 1));
+}
+
+//CHECK#2
+if (1 * true !== 1) {
+ $ERROR('#2: 1 * true === 1. Actual: ' + (1 * true));
+}
+
+//CHECK#3
+if (new Boolean(true) * 1 !== 1) {
+ $ERROR('#3: new Boolean(true) * 1 === 1. Actual: ' + (new Boolean(true) * 1));
+}
+
+//CHECK#4
+if (1 * new Boolean(true) !== 1) {
+ $ERROR('#4: 1 * new Boolean(true) === 1. Actual: ' + (1 * new Boolean(true)));
+}
+
+//CHECK#5
+if (true * new Number(1) !== 1) {
+ $ERROR('#5: true * new Number(1) === 1. Actual: ' + (true * new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) * true !== 1) {
+ $ERROR('#6: new Number(1) * true === 1. Actual: ' + (new Number(1) * true));
+}
+
+//CHECK#7
+if (new Boolean(true) * new Number(1) !== 1) {
+ $ERROR('#7: new Boolean(true) * new Number(1) === 1. Actual: ' + (new Boolean(true) * new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) * new Boolean(true) !== 1) {
+ $ERROR('#8: new Number(1) * new Boolean(true) === 1. Actual: ' + (new Number(1) * new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.2.js
new file mode 100644
index 000000000..ed949b587
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T2.2;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" * 1 !== 1) {
+ $ERROR('#1: "1" * 1 === 1. Actual: ' + ("1" * 1));
+}
+
+//CHECK#2
+if (1 * "1" !== 1) {
+ $ERROR('#2: 1 * "1" === 1. Actual: ' + (1 * "1"));
+}
+
+//CHECK#3
+if (new String("1") * 1 !== 1) {
+ $ERROR('#3: new String("1") * 1 === 1. Actual: ' + (new String("1") * 1));
+}
+
+//CHECK#4
+if (1 * new String("1") !== 1) {
+ $ERROR('#4: 1 * new String("1") === 1. Actual: ' + (1 * new String("1")));
+}
+
+//CHECK#5
+if ("1" * new Number(1) !== 1) {
+ $ERROR('#5: "1" * new Number(1) === 1. Actual: ' + ("1" * new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) * "1" !== 1) {
+ $ERROR('#6: new Number(1) * "1" === 1. Actual: ' + (new Number(1) * "1"));
+}
+
+//CHECK#7
+if (new String("1") * new Number(1) !== 1) {
+ $ERROR('#7: new String("1") * new Number(1) === 1. Actual: ' + (new String("1") * new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) * new String("1") !== 1) {
+ $ERROR('#8: new Number(1) * new String("1") === 1. Actual: ' + (new Number(1) * new String("1")));
+}
+
+//CHECK#9
+if (isNaN("x" * 1) !== true) {
+ $ERROR('#9: "x" * 1 === Not-a-Number. Actual: ' + ("x" * 1));
+}
+
+//CHECK#10
+if (isNaN(1 * "x") !== true) {
+ $ERROR('#10: 1 * "x" === Not-a-Number. Actual: ' + (1 * "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.3.js
new file mode 100644
index 000000000..8c3d32145
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T2.3;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 * null !== 0) {
+ $ERROR('#1: 1 * null === 0. Actual: ' + (1 * null));
+}
+
+//CHECK#2
+if (null * 1 !== 0) {
+ $ERROR('#2: null * 1 === 0. Actual: ' + (null * 1));
+}
+
+//CHECK#3
+if (new Number(1) * null !== 0) {
+ $ERROR('#3: new Number(1) * null === 0. Actual: ' + (new Number(1) * null));
+}
+
+//CHECK#4
+if (null * new Number(1) !== 0) {
+ $ERROR('#4: null * new Number(1) === 0. Actual: ' + (null * new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.4.js
new file mode 100644
index 000000000..919fa516f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T2.4;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(1 * undefined) !== true) {
+ $ERROR('#1: 1 * undefined === Not-a-Number. Actual: ' + (1 * undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined * 1) !== true) {
+ $ERROR('#2: undefined * 1 === Not-a-Number. Actual: ' + (undefined * 1));
+}
+
+//CHECK#3
+if (isNaN(new Number(1) * undefined) !== true) {
+ $ERROR('#3: new Number(1) * undefined === Not-a-Number. Actual: ' + (new Number(1) * undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined * new Number(1)) !== true) {
+ $ERROR('#4: undefined * new Number(1) === Not-a-Number. Actual: ' + (undefined * new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.5.js
new file mode 100644
index 000000000..b15f68b35
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T2.5;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true * "1" !== 1) {
+ $ERROR('#1: true * "1" === 1. Actual: ' + (true * "1"));
+}
+
+//CHECK#2
+if ("1" * true !== 1) {
+ $ERROR('#2: "1" * true === 1. Actual: ' + ("1" * true));
+}
+
+//CHECK#3
+if (new Boolean(true) * "1" !== 1) {
+ $ERROR('#3: new Boolean(true) * "1" === 1. Actual: ' + (new Boolean(true) * "1"));
+}
+
+//CHECK#4
+if ("1" * new Boolean(true) !== 1) {
+ $ERROR('#4: "1" * new Boolean(true) === 1. Actual: ' + ("1" * new Boolean(true)));
+}
+
+//CHECK#5
+if (true * new String("1") !== 1) {
+ $ERROR('#5: true * new String("1") === 1. Actual: ' + (true * new String("1")));
+}
+
+//CHECK#6
+if (new String("1") * true !== 1) {
+ $ERROR('#6: new String("1") * true === 1. Actual: ' + (new String("1") * true));
+}
+
+//CHECK#7
+if (new Boolean(true) * new String("1") !== 1) {
+ $ERROR('#7: new Boolean(true) * new String("1") === 1. Actual: ' + (new Boolean(true) * new String("1")));
+}
+
+//CHECK#8
+if (new String("1") * new Boolean(true) !== 1) {
+ $ERROR('#8: new String("1") * new Boolean(true) === 1. Actual: ' + (new String("1") * new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.6.js
new file mode 100644
index 000000000..94d03ece2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T2.6;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between primitive String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN("1" * undefined) !== true) {
+ $ERROR('#1: "1" * undefined === Not-a-Number. Actual: ' + ("1" * undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined * "1") !== true) {
+ $ERROR('#2: undefined * "1" === Not-a-Number. Actual: ' + (undefined * "1"));
+}
+
+//CHECK#3
+if (isNaN(new String("1") * undefined) !== true) {
+ $ERROR('#3: new String("1") * undefined === Not-a-Number. Actual: ' + (new String("1") * undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined * new String("1")) !== true) {
+ $ERROR('#4: undefined * new String("1") === Not-a-Number. Actual: ' + (undefined * new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.7.js
new file mode 100644
index 000000000..d7df94cb7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T2.7;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" * null !== 0) {
+ $ERROR('#1: "1" * null === 0. Actual: ' + ("1" * null));
+}
+
+//CHECK#2
+if (null * "1" !== 0) {
+ $ERROR('#2: null * "1" === 0. Actual: ' + (null * "1"));
+}
+
+//CHECK#3
+if (new String("1") * null !== 0) {
+ $ERROR('#3: new String("1") * null === 0. Actual: ' + (new String("1") * null));
+}
+
+//CHECK#4
+if (null * new String("1") !== 0) {
+ $ERROR('#4: null * new String("1") === 0. Actual: ' + (null * new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.8.js
new file mode 100644
index 000000000..11b1f6caf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T2.8;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(true * undefined) !== true) {
+ $ERROR('#1: true * undefined === Not-a-Number. Actual: ' + (true * undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined * true) !== true) {
+ $ERROR('#2: undefined * true === Not-a-Number. Actual: ' + (undefined * true));
+}
+
+//CHECK#3
+if (isNaN(new Boolean(true) * undefined) !== true) {
+ $ERROR('#3: new Boolean(true) * undefined === Not-a-Number. Actual: ' + (new Boolean(true) * undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined * new Boolean(true)) !== true) {
+ $ERROR('#4: undefined * new Boolean(true) === Not-a-Number. Actual: ' + (undefined * new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.9.js
new file mode 100644
index 000000000..481aa0bd2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A3_T2.9;
+ * @section: 11.5.1;
+ * @assertion: Operator x * y returns ToNumber(x) * ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true * null !== 0) {
+ $ERROR('#1: true * null === 0. Actual: ' + (true * null));
+}
+
+//CHECK#2
+if (null * true !== 0) {
+ $ERROR('#2: null * true === 0. Actual: ' + (null * true));
+}
+
+//CHECK#3
+if (new Boolean(true) * null !== 0) {
+ $ERROR('#3: new Boolean(true) * null === 0. Actual: ' + (new Boolean(true) * null));
+}
+
+//CHECK#4
+if (null * new Boolean(true) !== 0) {
+ $ERROR('#4: null * new Boolean(true) === 0. Actual: ' + (null * new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.1.js
new file mode 100644
index 000000000..ad51bea98
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T1.1;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: If left operand is NaN, the result is NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NaN * Number.NaN) !== true) {
+ $ERROR('#1: NaN * NaN === Not-a-Number. Actual: ' + (NaN * NaN));
+}
+
+//CHECK#2
+if (isNaN(Number.NaN * +0) !== true) {
+ $ERROR('#2: NaN * +0 === Not-a-Number. Actual: ' + (NaN * +0));
+}
+
+//CHECK#3
+if (isNaN(Number.NaN * -0) !== true) {
+ $ERROR('#3: NaN * -0 === Not-a-Number. Actual: ' + (NaN * -0));
+}
+
+//CHECK#4
+if (isNaN(Number.NaN * Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#4: NaN * Infinity === Not-a-Number. Actual: ' + (NaN * Infinity));
+}
+
+//CHECK#5
+if (isNaN(Number.NaN * Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#5: NaN * -Infinity === Not-a-Number. Actual: ' + (NaN * -Infinity));
+}
+
+//CHECK#6
+if (isNaN(Number.NaN * Number.MAX_VALUE) !== true) {
+ $ERROR('#6: NaN * Number.MAX_VALUE === Not-a-Number. Actual: ' + (NaN * Number.MAX_VALUE));
+}
+
+//CHECK#7
+if (isNaN(Number.NaN * Number.MIN_VALUE) !== true) {
+ $ERROR('#7: NaN * Number.MIN_VALUE === Not-a-Number. Actual: ' + (NaN * Number.MIN_VALUE));
+}
+
+//CHECK#8
+if (isNaN(Number.NaN * 1) !== true) {
+ $ERROR('#8: NaN * 1 === Not-a-Number. Actual: ' + (NaN * 1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.2.js
new file mode 100644
index 000000000..4c902c305
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T1.2.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T1.2;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: If right operand is NaN, the result is NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NaN * Number.NaN) !== true) {
+ $ERROR('#1: NaN * NaN === Not-a-Number. Actual: ' + (NaN * NaN));
+}
+
+//CHECK#2
+if (isNaN(+0 * Number.NaN) !== true) {
+ $ERROR('#2: +0 * NaN === Not-a-Number. Actual: ' + (+0 * NaN));
+}
+
+//CHECK#3
+if (isNaN(-0 * Number.NaN) !== true) {
+ $ERROR('#3: -0 * NaN === Not-a-Number. Actual: ' + (-0 * NaN));
+}
+
+//CHECK#4
+if (isNaN(Number.POSITIVE_INFINITY * Number.NaN) !== true) {
+ $ERROR('#4: Infinity * NaN === Not-a-Number. Actual: ' + (Infinity * NaN));
+}
+
+//CHECK#5
+if (isNaN(Number.NEGATIVE_INFINITY * Number.NaN) !== true) {
+ $ERROR('#5: -Infinity * NaN === Not-a-Number. Actual: ' + ( -Infinity * NaN));
+}
+
+//CHECK#6
+if (isNaN(Number.MAX_VALUE * Number.NaN) !== true) {
+ $ERROR('#6: Number.MAX_VALUE * NaN === Not-a-Number. Actual: ' + (Number.MAX_VALUE * NaN));
+}
+
+//CHECK#7
+if (isNaN(Number.MIN_VALUE * Number.NaN) !== true) {
+ $ERROR('#7: Number.MIN_VALUE * NaN === Not-a-Number. Actual: ' + (Number.MIN_VALUE * NaN));
+}
+
+//CHECK#8
+if (isNaN(1 * Number.NaN) !== true) {
+ $ERROR('#8: 1 * NaN === Not-a-Number. Actual: ' + (1 * NaN));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T2.js
new file mode 100644
index 000000000..744ccb269
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T2.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T2;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: The sign of the result is positive if both operands have the same sign, negative if the operands have different signs;
+ */
+
+//CHECK#1
+if (1 * 1 !== 1) {
+ $ERROR('#1: 1 * 1 === 1. Actual: ' + (1 * 1));
+}
+
+//CHECK#2
+if (1 * -1 !== -1) {
+ $ERROR('#2: 1 * -1 === -1. Actual: ' + (1 * -1));
+}
+
+//CHECK#3
+if (-1 * 1 !== -1) {
+ $ERROR('#3: -1 * 1 === -1. Actual: ' + (-1 * 1));
+}
+
+//CHECK#4
+if (-1 * -1 !== 1) {
+ $ERROR('#4: -1 * -1 === 1. Actual: ' + (-1 * -1));
+}
+
+//CHECK#5
+if (0 * 0 !== 0) {
+ $ERROR('#5.1: 0 * 0 === 0. Actual: ' + (0 * 0));
+} else {
+ if (1 / (0 * 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5.2: 0 * 0 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#6
+if (0 * -0 !== -0) {
+ $ERROR('#6.1: 0 * -0 === 0. Actual: ' + (0 * -0));
+} else {
+ if (1 / (0 * -0) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#6.2: 0 * -0 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#7
+if (-0 * 0 !== -0) {
+ $ERROR('#7.1: -0 * 0 === 0. Actual: ' + (-0 * 0));
+} else {
+ if (1 / (-0 * 0) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#7.2: -0 * 0 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#8
+if (-0 * -0 !== 0) {
+ $ERROR('#8.1: -0 * -0 === 0. Actual: ' + (-0 * -0));
+} else {
+ if (1 / (-0 * -0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#8.2: 0 * -0 === - 0. Actual: +0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T3.js
new file mode 100644
index 000000000..0d21ca573
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T3.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T3;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: Multiplication of an infinity by a zero results in NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NEGATIVE_INFINITY * 0) !== true) {
+ $ERROR('#1: Infinity * 0 === Not-a-Number. Actual: ' + (Infinity * 0));
+}
+
+//CHECK#2
+if (isNaN(-0 * Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#2: -0 * -Infinity === Not-a-Number. Actual: ' + (-0 * -Infinity));
+}
+
+//CHECK#3
+if (isNaN(Number.POSITIVE_INFINITY * -0) !== true) {
+ $ERROR('#3: Infinity * -0 === Not-a-Number. Actual: ' + (Infinity * -0));
+}
+
+//CHECK#4
+if (isNaN(0 * Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#4: 0 * Infinity === Not-a-Number. Actual: ' + (0 * Infinity));
+}
+
+//CHECK#5
+if (isNaN(Number.NEGATIVE_INFINITY * -0) !== true) {
+ $ERROR('#5: Infinity * -0 === Not-a-Number. Actual: ' + (Infinity * -0));
+}
+
+//CHECK#6
+if (isNaN(0 * Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#6: 0 * -Infinity === Not-a-Number. Actual: ' + (0 * -Infinity));
+}
+
+//CHECK#7
+if (isNaN(Number.POSITIVE_INFINITY * 0) !== true) {
+ $ERROR('#7: Infinity * 0 === Not-a-Number. Actual: ' + (Infinity * 0));
+}
+
+//CHECK#8
+if (isNaN(-0 * Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#8: -0 * Infinity === Not-a-Number. Actual: ' + (-0 * Infinity));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T4.js
new file mode 100644
index 000000000..cc7ddb81e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T4;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: Multiplication of an infinity by an infinity results in an infinity of appropriate sign;
+ */
+
+//CHECK#1
+if (Number.NEGATIVE_INFINITY * Number.NEGATIVE_INFINITY !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: -Infinity * -Infinity === Infinity. Actual: ' + (-Infinity * -Infinity));
+}
+
+//CHECK#2
+if (Number.POSITIVE_INFINITY * Number.POSITIVE_INFINITY !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2: Infinity * Infinity === Infinity. Actual: ' + (Infinity * Infinity));
+}
+
+//CHECK#3
+if (Number.NEGATIVE_INFINITY * Number.POSITIVE_INFINITY !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3: -Infinity * Infinity === -Infinity. Actual: ' + (-Infinity * Infinity));
+}
+
+//CHECK#4
+if (Number.POSITIVE_INFINITY * Number.NEGATIVE_INFINITY !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4: Infinity * -Infinity === -Infinity. Actual: ' + (Infinity * -Infinity));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T5.js
new file mode 100644
index 000000000..0e2017d47
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T5;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: Multiplication of an infinity by a finite non-zero value results in a signed infinity;
+ */
+
+//CHECK#1
+if (Number.NEGATIVE_INFINITY * -1 !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: -Infinity * -1 === Infinity. Actual: ' + (-Infinity * -1));
+}
+
+//CHECK#2
+if (-1 * Number.NEGATIVE_INFINITY !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2: -1 * -Infinity === Infinity. Actual: ' + (-1 * -Infinity));
+}
+
+//CHECK#3
+if (Number.POSITIVE_INFINITY * -1 !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3: Infinity * -1 === -Infinity. Actual: ' + (Infinity * -1));
+}
+
+//CHECK#4
+if (-1 * Number.POSITIVE_INFINITY !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4: -1 * Infinity === -Infinity. Actual: ' + (-1 * Infinity));
+}
+
+//CHECK#5
+if (Number.POSITIVE_INFINITY * Number.MAX_VALUE !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5: Infinity * Number.MAX_VALUE === Infinity. Actual: ' + (Infinity * Number.MAX_VALUE));
+}
+
+//CHECK#6
+if (Number.POSITIVE_INFINITY * Number.MAX_VALUE !== Number.MAX_VALUE * Number.POSITIVE_INFINITY) {
+ $ERROR('#6: Infinity * Number.MAX_VALUE === Number.MAX_VALUE * Infinity. Actual: ' + (Infinity * Number.MAX_VALUE));
+}
+
+//CHECK#7
+if (Number.NEGATIVE_INFINITY * Number.MIN_VALUE !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#7: -Infinity * Number.MIN_VALUE === -Infinity. Actual: ' + (-Infinity * Number.MIN_VALUE));
+}
+
+//CHECK#8
+if (Number.NEGATIVE_INFINITY * Number.MIN_VALUE !== Number.MIN_VALUE * Number.NEGATIVE_INFINITY) {
+ $ERROR('#8: -Infinity * Number.MIN_VALUE === Number.MIN_VALUE * -Infinity. Actual: ' + (-Infinity * Number.MIN_VALUE));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T6.js
new file mode 100644
index 000000000..a314b80fb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T6;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: If the magnitude is too large to represent, the result is then an infinity of appropriate sign;
+ */
+
+//CHECK#1
+if (Number.MAX_VALUE * 1.1 !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: Number.MAX_VALUE * 1.1 === Number.POSITIVE_INFINITY. Actual: ' + (Number.MAX_VALUE * 1.1));
+}
+
+//CHECK#2
+if (-1.1 * Number.MAX_VALUE !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#2: -1.1 * Number.MAX_VALUE === Number.NEGATIVE_INFINITY. Actual: ' + (-1.1 * Number.MAX_VALUE));
+}
+
+//CHECK#3
+if (Number.MAX_VALUE * 1 !== Number.MAX_VALUE) {
+ $ERROR('#3: Number.MAX_VALUE * 1 === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE * 1));
+}
+
+//CHECK#4
+if (-1 * Number.MAX_VALUE !== -Number.MAX_VALUE) {
+ $ERROR('#4: -1 * Number.MAX_VALUE === -Number.MAX_VALUE. Actual: ' + (-1 * Number.MAX_VALUE));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T7.js
new file mode 100644
index 000000000..4f517eaf2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T7.js
@@ -0,0 +1,57 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T7;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: If the magnitude is too small to represent, the result is then a zero of appropriate sign;
+ */
+
+//CHECK#1
+if (Number.MIN_VALUE * 0.1 !== 0) {
+ $ERROR('#1: Number.MIN_VALUE * 0.1 === 0. Actual: ' + (Number.MIN_VALUE * 0.1));
+}
+
+//CHECK#2
+if (-0.1 * Number.MIN_VALUE !== -0) {
+ $ERROR('#2.1: -0.1 * Number.MIN_VALUE === -0. Actual: ' + (-0.1 * Number.MIN_VALUE));
+} else {
+ if (1 / (-0.1 * Number.MIN_VALUE) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#2.2: -0.1 * Number.MIN_VALUE === -0. Actual: +0');
+ }
+}
+
+//CHECK#3
+if (Number.MIN_VALUE * 0.5 !== 0) {
+ $ERROR('#3: Number.MIN_VALUE * 0.5 === 0. Actual: ' + (Number.MIN_VALUE * 0.5));
+}
+
+//CHECK#4
+if (-0.5 * Number.MIN_VALUE !== -0) {
+ $ERROR('#4.1: -0.5 * Number.MIN_VALUE === -0. Actual: ' + (-0.5 * Number.MIN_VALUE));
+} else {
+ if (1 / (-0.5 * Number.MIN_VALUE) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4.2: -0.5 * Number.MIN_VALUE === -0. Actual: +0');
+ }
+}
+
+//CHECK#5
+if (Number.MIN_VALUE * 0.51 !== Number.MIN_VALUE) {
+ $ERROR('#5: Number.MIN_VALUE * 0.51 === Number.MIN_VALUE. Actual: ' + (Number.MIN_VALUE * 0.51));
+}
+
+//CHECK#6
+if (-0.51 * Number.MIN_VALUE !== -Number.MIN_VALUE) {
+ $ERROR('#6: -0.51 * Number.MIN_VALUE === -Number.MIN_VALUE. Actual: ' + (-0.51 * Number.MIN_VALUE));
+}
+
+//CHECK#7
+if (Number.MIN_VALUE * 0.9 !== Number.MIN_VALUE) {
+ $ERROR('#7: Number.MIN_VALUE * 0.9 === Number.MIN_VALUE. Actual: ' + (Number.MIN_VALUE * 0.9));
+}
+
+//CHECK#8
+if (-0.9 * Number.MIN_VALUE !== -Number.MIN_VALUE) {
+ $ERROR('#8: -0.9 * Number.MIN_VALUE === -Number.MIN_VALUE. Actual: ' + (-0.9 * Number.MIN_VALUE));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T8.js
new file mode 100644
index 000000000..d3e466b7b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.1_Applying_the_asterisk_Operator/S11.5.1_A4_T8.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.1_A4_T8;
+ * @section: 11.5.1;
+ * @assertion: The result of a floating-point multiplication is governed by the rules of IEEE 754 double-precision arithmetics;
+ * @description: Multiplication is not always associative (x * y * z is the same as (x * y) * z, not x * (y * z));
+*/
+
+//CHECK#1
+if (Number.MAX_VALUE * 1.1 * 0.9 !== (Number.MAX_VALUE * 1.1) * 0.9) {
+ $ERROR('#1: Number.MAX_VALUE * 1.1 * 0.9 === (Number.MAX_VALUE * 1.1) * 0.9. Actual: ' + (Number.MAX_VALUE * 1.1 * 0.9));
+}
+
+//CHECK#2
+if ((Number.MAX_VALUE * 1.1) * 0.9 === Number.MAX_VALUE * (1.1 * 0.9)) {
+ $ERROR('#2: (Number.MAX_VALUE * 1.1) * 0.9 !== Number.MAX_VALUE * (1.1 * 0.9)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A1.js
new file mode 100644
index 000000000..cec04d1ba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.5.2_A1;
+* @section: 11.5.2, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between MultiplicativeExpression and "/" or between "/" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("1\u0009/\u00091") !== 1) {
+ $ERROR('#1: 1\\u0009/\\u00091 === 1');
+}
+
+//CHECK#2
+if (eval("1\u000B/\u000B1") !== 1) {
+ $ERROR('#2: 1\\u000B/\\u000B1 === 1');
+}
+
+//CHECK#3
+if (eval("1\u000C/\u000C1") !== 1) {
+ $ERROR('#3: 1\\u000C/\\u000C1 === 1');
+}
+
+//CHECK#4
+if (eval("1\u0020/\u00201") !== 1) {
+ $ERROR('#4: 1\\u0020/\\u00201 === 1');
+}
+
+//CHECK#5
+if (eval("1\u00A0/\u00A01") !== 1) {
+ $ERROR('#5: 1\\u00A0/\\u00A01 === 1');
+}
+
+//CHECK#6
+if (eval("1\u000A/\u000A1") !== 1) {
+ $ERROR('#6: 1\\u000A/\\u000A1 === 1');
+}
+
+//CHECK#7
+if (eval("1\u000D/\u000D1") !== 1) {
+ $ERROR('#7: 1\\u000D/\\u000D1 === 1');
+}
+
+//CHECK#8
+if (eval("1\u2028/\u20281") !== 1) {
+ $ERROR('#8: 1\\u2028/\\u20281 === 1');
+}
+
+//CHECK#9
+if (eval("1\u2029/\u20291") !== 1) {
+ $ERROR('#9: 1\\u2029/\\u20291 === 1');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029/\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== 1) {
+ $ERROR('#10: 1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029/\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T1.js
new file mode 100644
index 000000000..d28d33b4e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A2.1_T1;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (1 / 1 !== 1) {
+ $ERROR('#1: 1 / 1 === 1. Actual: ' + (1 / 1));
+}
+
+//CHECK#2
+var x = 1;
+if (x / 1 !== 1) {
+ $ERROR('#2: var x = 1; x / 1 === 1. Actual: ' + (x / 1));
+}
+
+//CHECK#3
+var y = 1;
+if (1 / y !== 1) {
+ $ERROR('#3: var y = 1; 1 / y === 1. Actual: ' + (1 / y));
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if (x / y !== 1) {
+ $ERROR('#4: var x = 1; var y = 1; x / y === 1. Actual: ' + (x / y));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if (objectx.prop / objecty.prop !== 1) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; objectx.prop / objecty.prop === 1. Actual: ' + (objectx.prop / objecty.prop));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T2.js
new file mode 100644
index 000000000..bc8f3398f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A2.1_T2;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x / 1;
+ $ERROR('#1.1: x / 1 throw ReferenceError. Actual: ' + (x / 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x / 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T3.js
new file mode 100644
index 000000000..60d0bfce1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A2.1_T3;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 / y;
+ $ERROR('#1.1: 1 / y throw ReferenceError. Actual: ' + (1 / y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 / y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.2_T1.js
new file mode 100644
index 000000000..67d88c198
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A2.2_T1;
+ * @section: 11.5.2, 8.6.2.6;
+ * @assertion: Operator x / y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return 1}} / 1 !== 1) {
+ $ERROR('#1: {valueOf: function() {return 1}} / 1 === 1. Actual: ' + ({valueOf: function() {return 1}} / 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 1}, toString: function() {return 0}} / 1 !== 1) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 0}} / 1 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 0}} / 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 1}, toString: function() {return {}}} / 1 !== 1) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} / 1 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} / 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 1}, toString: function() {throw "error"}} / 1 !== 1) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} / 1 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} / 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 1}, toString: function() {throw "error"}} / 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 1}, toString: function() {throw "error"}} / 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 / {toString: function() {return 1}} !== 1) {
+ $ERROR('#5: 1 / {toString: function() {return 1}} === 1. Actual: ' + (1 / {toString: function() {return 1}}));
+}
+
+//CHECK#6
+if (1 / {valueOf: function() {return {}}, toString: function() {return 1}} !== 1) {
+ $ERROR('#6: 1 / {valueOf: function() {return {}}, toString: function() {return 1}} === 1. Actual: ' + (1 / {valueOf: function() {return {}}, toString: function() {return 1}}));
+}
+
+//CHECK#7
+try {
+ 1 / {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: 1 / {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (1 / {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 / {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 / {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 / {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 / {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 / {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.3_T1.js
new file mode 100644
index 000000000..e45fb0014
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A2.3_T1;
+ * @section: 11.5.2;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x / y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x / y throw "x". Actual: ' + (x / y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToNumber(first expression) is called first, and then ToNumber(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x / y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T1.js
new file mode 100644
index 000000000..80d0cef8d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A2.4_T1;
+ * @section: 11.5.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) / x !== 1) {
+ $ERROR('#1: var x = 0; (x = 1) / x === 1. Actual: ' + ((x = 1) / x));
+}
+
+//CHECK#2
+var x = 0;
+if (x / (x = 1) !== 0) {
+ $ERROR('#2: var x = 0; x / (x = 1) === 0. Actual: ' + (x / (x = 1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T2.js
new file mode 100644
index 000000000..db6854d76
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A2.4_T2;
+ * @section: 11.5.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() / y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() / y() throw "x". Actual: ' + (x() / y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() / y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T3.js
new file mode 100644
index 000000000..86b51ee92
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A2.4_T3;
+ * @section: 11.5.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x / (x = 1);
+ $ERROR('#1.1: x / (x = 1) throw ReferenceError. Actual: ' + (x / (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x / (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) / y !== 1) {
+ $ERROR('#2: (y = 1) / y === 1. Actual: ' + ((y = 1) / y));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.1.js
new file mode 100644
index 000000000..0ead4aea7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T1.1;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true / true !== 1) {
+ $ERROR('#1: true / true === 1. Actual: ' + (true / true));
+}
+
+//CHECK#2
+if (new Boolean(true) / true !== 1) {
+ $ERROR('#2: new Boolean(true) / true === 1. Actual: ' + (new Boolean(true) / true));
+}
+
+//CHECK#3
+if (true / new Boolean(true) !== 1) {
+ $ERROR('#3: true / new Boolean(true) === 1. Actual: ' + (true / new Boolean(true)));
+}
+
+//CHECK#4
+if (new Boolean(true) / new Boolean(true) !== 1) {
+ $ERROR('#4: new Boolean(true) / new Boolean(true) === 1. Actual: ' + (new Boolean(true) / new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.2.js
new file mode 100644
index 000000000..f45544df2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T1.2;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 / 1 !== 1) {
+ $ERROR('#1: 1 / 1 === 1. Actual: ' + (1 / 1));
+}
+
+//CHECK#2
+if (new Number(1) / 1 !== 1) {
+ $ERROR('#2: new Number(1) / 1 === 1. Actual: ' + (new Number(1) / 1));
+}
+
+//CHECK#3
+if (1 / new Number(1) !== 1) {
+ $ERROR('#3: 1 / new Number(1) === 1. Actual: ' + (1 / new Number(1)));
+}
+
+//CHECK#4
+if (new Number(1) / new Number(1) !== 1) {
+ $ERROR('#4: new Number(1) / new Number(1) === 1. Actual: ' + (new Number(1) / new Number(1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.3.js
new file mode 100644
index 000000000..16ec25a54
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T1.3;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" / "1" !== 1) {
+ $ERROR('#1: "1" / "1" === 1. Actual: ' + ("1" / "1"));
+}
+
+//CHECK#2
+if (new String("1") / "1" !== 1) {
+ $ERROR('#2: new String("1") / "1" === 1. Actual: ' + (new String("1") / "1"));
+}
+
+//CHECK#3
+if ("1" / new String("1") !== 1) {
+ $ERROR('#3: "1" / new String("1") === 1. Actual: ' + ("1" / new String("1")));
+}
+
+//CHECK#4
+if (new String("1") / new String("1") !== 1) {
+ $ERROR('#4: new String("1") / new String("1") === 1. Actual: ' + (new String("1") / new String("1")));
+}
+
+//CHECK#5
+if (isNaN("x" / "1") !== true) {
+ $ERROR('#5: "x" / "1" === Not-a-Number. Actual: ' + ("x" / "1"));
+}
+
+//CHECK#6
+if (isNaN("1" / "x") !== true) {
+ $ERROR('#6: "1" / "x" === Not-a-Number. Actual: ' + ("1" / "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.4.js
new file mode 100644
index 000000000..cb2b91f5e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T1.4;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(null / undefined) !== true) {
+ $ERROR('#1: null / undefined === Not-a-Number. Actual: ' + (null / undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined / null) !== true) {
+ $ERROR('#2: undefined / null === Not-a-Number. Actual: ' + (undefined / null));
+}
+
+//CHECK#3
+if (isNaN(undefined / undefined) !== true) {
+ $ERROR('#3: undefined / undefined === Not-a-Number. Actual: ' + (undefined / undefined));
+}
+
+//CHECK#4
+if (isNaN(null / null) !== true) {
+ $ERROR('#4: null / null === Not-a-Number. Actual: ' + (null / null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.5.js
new file mode 100644
index 000000000..a99519329
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T1.5.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T1.5;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (isNaN({} / function(){return 1}) !== true) {
+ $ERROR('#1: {} / function(){return 1} === Not-a-Number. Actual: ' + ({} / function(){return 1}));
+}
+
+//CHECK#2
+if (isNaN(function(){return 1} / {}) !== true) {
+ $ERROR('#2: function(){return 1} / {} === Not-a-Number. Actual: ' + (function(){return 1} / {}));
+}
+
+//CHECK#3
+if (isNaN(function(){return 1} / function(){return 1}) !== true) {
+ $ERROR('#3: function(){return 1} / function(){return 1} === Not-a-Number. Actual: ' + (function(){return 1} / function(){return 1}));
+}
+
+//CHECK#4
+if (isNaN({} / {}) !== true) {
+ $ERROR('#4: {} / {} === Not-a-Number. Actual: ' + ({} / {}));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.1.js
new file mode 100644
index 000000000..cf2ef46fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T2.1;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if (true / 1 !== 1) {
+ $ERROR('#1: true / 1 === 1. Actual: ' + (true / 1));
+}
+
+//CHECK#2
+if (1 / true !== 1) {
+ $ERROR('#2: 1 / true === 1. Actual: ' + (1 / true));
+}
+
+//CHECK#3
+if (new Boolean(true) / 1 !== 1) {
+ $ERROR('#3: new Boolean(true) / 1 === 1. Actual: ' + (new Boolean(true) / 1));
+}
+
+//CHECK#4
+if (1 / new Boolean(true) !== 1) {
+ $ERROR('#4: 1 / new Boolean(true) === 1. Actual: ' + (1 / new Boolean(true)));
+}
+
+//CHECK#5
+if (true / new Number(1) !== 1) {
+ $ERROR('#5: true / new Number(1) === 1. Actual: ' + (true / new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) / true !== 1) {
+ $ERROR('#6: new Number(1) / true === 1. Actual: ' + (new Number(1) / true));
+}
+
+//CHECK#7
+if (new Boolean(true) / new Number(1) !== 1) {
+ $ERROR('#7: new Boolean(true) / new Number(1) === 1. Actual: ' + (new Boolean(true) / new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) / new Boolean(true) !== 1) {
+ $ERROR('#8: new Number(1) / new Boolean(true) === 1. Actual: ' + (new Number(1) / new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.2.js
new file mode 100644
index 000000000..48bb35e57
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T2.2;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" / 1 !== 1) {
+ $ERROR('#1: "1" / 1 === 1. Actual: ' + ("1" / 1));
+}
+
+//CHECK#2
+if (1 / "1" !== 1) {
+ $ERROR('#2: 1 / "1" === 1. Actual: ' + (1 / "1"));
+}
+
+//CHECK#3
+if (new String("1") / 1 !== 1) {
+ $ERROR('#3: new String("1") / 1 === 1. Actual: ' + (new String("1") / 1));
+}
+
+//CHECK#4
+if (1 / new String("1") !== 1) {
+ $ERROR('#4: 1 / new String("1") === 1. Actual: ' + (1 / new String("1")));
+}
+
+//CHECK#5
+if ("1" / new Number(1) !== 1) {
+ $ERROR('#5: "1" / new Number(1) === 1. Actual: ' + ("1" / new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) / "1" !== 1) {
+ $ERROR('#6: new Number(1) / "1" === 1. Actual: ' + (new Number(1) / "1"));
+}
+
+//CHECK#7
+if (new String("1") / new Number(1) !== 1) {
+ $ERROR('#7: new String("1") / new Number(1) === 1. Actual: ' + (new String("1") / new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) / new String("1") !== 1) {
+ $ERROR('#8: new Number(1) / new String("1") === 1. Actual: ' + (new Number(1) / new String("1")));
+}
+
+//CHECK#9
+if (isNaN("x" / 1) !== true) {
+ $ERROR('#9: "x" / 1 === Not-a-Number. Actual: ' + ("x" / 1));
+}
+
+//CHECK#10
+if (isNaN(1 / "x") !== true) {
+ $ERROR('#10: 1 / "x" === Not-a-Number. Actual: ' + (1 / "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.3.js
new file mode 100644
index 000000000..e8c3aee1e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T2.3;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 / null !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: 1 / null === +Infinity. Actual: ' + (1 / null));
+}
+
+//CHECK#2
+if (null / 1 !== 0) {
+ $ERROR('#2: null / 1 === 0. Actual: ' + (null / 1));
+}
+
+//CHECK#3
+if (new Number(1) / null !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: new Number(1) / null === +Infinity. Actual: ' + (new Number(1) / null));
+}
+
+//CHECK#4
+if (null / new Number(1) !== 0) {
+ $ERROR('#4: null / new Number(1) === 0. Actual: ' + (null / new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.4.js
new file mode 100644
index 000000000..aabaabbea
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T2.4;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(1 / undefined) !== true) {
+ $ERROR('#1: 1 / undefined === Not-a-Number. Actual: ' + (1 / undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined / 1) !== true) {
+ $ERROR('#2: undefined / 1 === Not-a-Number. Actual: ' + (undefined / 1));
+}
+
+//CHECK#3
+if (isNaN(new Number(1) / undefined) !== true) {
+ $ERROR('#3: new Number(1) / undefined === Not-a-Number. Actual: ' + (new Number(1) / undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined / new Number(1)) !== true) {
+ $ERROR('#4: undefined / new Number(1) === Not-a-Number. Actual: ' + (undefined / new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.5.js
new file mode 100644
index 000000000..2892d6da0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T2.5;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true / "1" !== 1) {
+ $ERROR('#1: true / "1" === 1. Actual: ' + (true / "1"));
+}
+
+//CHECK#2
+if ("1" / true !== 1) {
+ $ERROR('#2: "1" / true === 1. Actual: ' + ("1" / true));
+}
+
+//CHECK#3
+if (new Boolean(true) / "1" !== 1) {
+ $ERROR('#3: new Boolean(true) / "1" === 1. Actual: ' + (new Boolean(true) / "1"));
+}
+
+//CHECK#4
+if ("1" / new Boolean(true) !== 1) {
+ $ERROR('#4: "1" / new Boolean(true) === 1. Actual: ' + ("1" / new Boolean(true)));
+}
+
+//CHECK#5
+if (true / new String("1") !== 1) {
+ $ERROR('#5: true / new String("1") === 1. Actual: ' + (true / new String("1")));
+}
+
+//CHECK#6
+if (new String("1") / true !== 1) {
+ $ERROR('#6: new String("1") / true === 1. Actual: ' + (new String("1") / true));
+}
+
+//CHECK#7
+if (new Boolean(true) / new String("1") !== 1) {
+ $ERROR('#7: new Boolean(true) / new String("1") === 1. Actual: ' + (new Boolean(true) / new String("1")));
+}
+
+//CHECK#8
+if (new String("1") / new Boolean(true) !== 1) {
+ $ERROR('#8: new String("1") / new Boolean(true) === 1. Actual: ' + (new String("1") / new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.6.js
new file mode 100644
index 000000000..956adb308
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T2.6;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN("1" / undefined) !== true) {
+ $ERROR('#1: "1" / undefined === Not-a-Number. Actual: ' + ("1" / undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined / "1") !== true) {
+ $ERROR('#2: undefined / "1" === Not-a-Number. Actual: ' + (undefined / "1"));
+}
+
+//CHECK#3
+if (isNaN(new String("1") / undefined) !== true) {
+ $ERROR('#3: new String("1") / undefined === Not-a-Number. Actual: ' + (new String("1") / undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined / new String("1")) !== true) {
+ $ERROR('#4: undefined / new String("1") === Not-a-Number. Actual: ' + (undefined / new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.7.js
new file mode 100644
index 000000000..5404e824a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T2.7;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" / null !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: "1" / null === +Infinity. Actual: ' + ("1" / null));
+}
+
+//CHECK#2
+if (null / "1" !== 0) {
+ $ERROR('#2: null / "1" === 0. Actual: ' + (null / "1"));
+}
+
+//CHECK#3
+if (new String("1") / null !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: new String("1") / null === +Infinity. Actual: ' + (new String("1") / null));
+}
+
+//CHECK#4
+if (null / new String("1") !== 0) {
+ $ERROR('#4: null / new String("1") === 0. Actual: ' + (null / new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.8.js
new file mode 100644
index 000000000..a3d235ba9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T2.8;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(true / undefined) !== true) {
+ $ERROR('#1: true / undefined === Not-a-Number. Actual: ' + (true / undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined / true) !== true) {
+ $ERROR('#2: undefined / true === Not-a-Number. Actual: ' + (undefined / true));
+}
+
+//CHECK#3
+if (isNaN(new Boolean(true) / undefined) !== true) {
+ $ERROR('#3: new Boolean(true) / undefined === Not-a-Number. Actual: ' + (new Boolean(true) / undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined / new Boolean(true)) !== true) {
+ $ERROR('#4: undefined / new Boolean(true) === Not-a-Number. Actual: ' + (undefined / new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.9.js
new file mode 100644
index 000000000..a94ff7ada
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A3_T2.9;
+ * @section: 11.5.2;
+ * @assertion: Operator x / y returns ToNumber(x) / ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true / null !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: true / null === +Infinity. Actual: ' + (true / null));
+}
+
+//CHECK#2
+if (null / true !== 0) {
+ $ERROR('#2: null / true === 0. Actual: ' + (null / true));
+}
+
+//CHECK#3
+if (new Boolean(true) / null !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: new Boolean(true) / null === +Infinity. Actual: ' + (new Boolean(true) / null));
+}
+
+//CHECK#4
+if (null / new Boolean(true) !== 0) {
+ $ERROR('#4: null / new Boolean(true) === 0. Actual: ' + (null / new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T1.1.js
new file mode 100644
index 000000000..80a938747
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T1.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T1.1;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: If left operand is NaN, the result is NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NaN / Number.NaN) !== true) {
+ $ERROR('#1: NaN / NaN === Not-a-Number. Actual: ' + (NaN / NaN));
+}
+
+//CHECK#2
+if (isNaN(Number.NaN / +0) !== true) {
+ $ERROR('#2: NaN / +0 === Not-a-Number. Actual: ' + (NaN / +0));
+}
+
+//CHECK#3
+if (isNaN(Number.NaN / -0) !== true) {
+ $ERROR('#3: NaN / -0 === Not-a-Number. Actual: ' + (NaN / -0));
+}
+
+//CHECK#4
+if (isNaN(Number.NaN / Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#4: NaN / Infinity === Not-a-Number. Actual: ' + (NaN / Infinity));
+}
+
+//CHECK#5
+if (isNaN(Number.NaN / Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#5: NaN / -Infinity === Not-a-Number. Actual: ' + (NaN / -Infinity));
+}
+
+//CHECK#6
+if (isNaN(Number.NaN / Number.MAX_VALUE) !== true) {
+ $ERROR('#6: NaN / Number.MAX_VALUE === Not-a-Number. Actual: ' + (NaN / Number.MAX_VALUE));
+}
+
+//CHECK#7
+if (isNaN(Number.NaN / Number.MIN_VALUE) !== true) {
+ $ERROR('#7: NaN / Number.MIN_VALUE === Not-a-Number. Actual: ' + (NaN / Number.MIN_VALUE));
+}
+
+//CHECK#8
+if (isNaN(Number.NaN / 1) !== true) {
+ $ERROR('#8: NaN / 1 === Not-a-Number. Actual: ' + (NaN / 1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T1.2.js
new file mode 100644
index 000000000..f4245b5d6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T1.2.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T1.2;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: If right operand is NaN, the result is NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NaN / Number.NaN) !== true) {
+ $ERROR('#1: NaN / NaN === Not-a-Number. Actual: ' + (NaN / NaN));
+}
+
+//CHECK#2
+if (isNaN(+0 / Number.NaN) !== true) {
+ $ERROR('#2: +0 / NaN === Not-a-Number. Actual: ' + (+0 / NaN));
+}
+
+//CHECK#3
+if (isNaN(-0 / Number.NaN) !== true) {
+ $ERROR('#3: -0 / NaN === Not-a-Number. Actual: ' + (-0 / NaN));
+}
+
+//CHECK#4
+if (isNaN(Number.POSITIVE_INFINITY / Number.NaN) !== true) {
+ $ERROR('#4: Infinity / NaN === Not-a-Number. Actual: ' + (Infinity / NaN));
+}
+
+//CHECK#5
+if (isNaN(Number.NEGATIVE_INFINITY / Number.NaN) !== true) {
+ $ERROR('#5: -Infinity / NaN === Not-a-Number. Actual: ' + ( -Infinity / NaN));
+}
+
+//CHECK#6
+if (isNaN(Number.MAX_VALUE / Number.NaN) !== true) {
+ $ERROR('#6: Number.MAX_VALUE / NaN === Not-a-Number. Actual: ' + (Number.MAX_VALUE / NaN));
+}
+
+//CHECK#7
+if (isNaN(Number.MIN_VALUE / Number.NaN) !== true) {
+ $ERROR('#7: Number.MIN_VALUE / NaN === Not-a-Number. Actual: ' + (Number.MIN_VALUE / NaN));
+}
+
+//CHECK#8
+if (isNaN(1 / Number.NaN) !== true) {
+ $ERROR('#8: 1 / NaN === Not-a-Number. Actual: ' + (1 / NaN));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T10.js
new file mode 100644
index 000000000..19c2d9dd0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T10.js
@@ -0,0 +1,58 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T10;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: If both operands are finite and nonzero, the quotient is computed and rounded using IEEE 754 round-to-nearest mode.
+ * If the magnitude is too small to represent, the result is then a zero of appropriate sign;
+ */
+
+//CHECK#1
+if (Number.MIN_VALUE / 2.1 !== 0) {
+ $ERROR('#1: Number.MIN_VALUE / 2.1 === 0. Actual: ' + (Number.MIN_VALUE / 2.1));
+}
+
+//CHECK#2
+if (Number.MIN_VALUE / -2.1 !== -0) {
+ $ERROR('#2.1: Number.MIN_VALUE / -2.1 === 0. Actual: ' + (Number.MIN_VALUE / -2.1));
+} else {
+ if (1 / (Number.MIN_VALUE / -2.1) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#2.2: Number.MIN_VALUE / -2.1 === -0. Actual: +0');
+ }
+}
+
+//CHECK#3
+if (Number.MIN_VALUE / 2.0 !== 0) {
+ $ERROR('#3: Number.MIN_VALUE / 2.0 === 0. Actual: ' + (Number.MIN_VALUE / 2.0));
+}
+
+//CHECK#4
+if (Number.MIN_VALUE / -2.0 !== -0) {
+ $ERROR('#4.1: Number.MIN_VALUE / -2.0 === -0. Actual: ' + (Number.MIN_VALUE / -2.0));
+} else {
+ if (1 / (Number.MIN_VALUE / -2.0) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4.2: Number.MIN_VALUE / -2.0 === -0. Actual: +0');
+ }
+}
+
+//CHECK#5
+if (Number.MIN_VALUE / 1.9 !== Number.MIN_VALUE) {
+ $ERROR('#5: Number.MIN_VALUE / 1.9 === Number.MIN_VALUE. Actual: ' + (Number.MIN_VALUE / 1.9));
+}
+
+//CHECK#6
+if (Number.MIN_VALUE / -1.9 !== -Number.MIN_VALUE) {
+ $ERROR('#6: Number.MIN_VALUE / -1.9 === -Number.MIN_VALUE. Actual: ' + (Number.MIN_VALUE / -1.9));
+}
+
+//CHECK#7
+if (Number.MIN_VALUE / 1.1 !== Number.MIN_VALUE) {
+ $ERROR('#7: Number.MIN_VALUE / 1.1 === Number.MIN_VALUE. Actual: ' + (Number.MIN_VALUE / 1.1));
+}
+
+//CHECK#8
+if (Number.MIN_VALUE / -1.1 !== -Number.MIN_VALUE) {
+ $ERROR('#8: Number.MIN_VALUE / -1.1 === -Number.MIN_VALUE. Actual: ' + (Number.MIN_VALUE / -1.1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T2.js
new file mode 100644
index 000000000..4310ba38d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T2;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: The sign of the result is positive if both operands have the same sign, negative if the operands have different signs;
+ */
+
+//CHECK#1
+if (1 / 1 !== 1) {
+ $ERROR('#1: 1 / 1 === 1. Actual: ' + (1 / 1));
+}
+
+//CHECK#2
+if (1 / -1 !== -1) {
+ $ERROR('#2: 1 / -1 === -1. Actual: ' + (1 / -1));
+}
+
+//CHECK#3
+if (-1 / 1 !== -1) {
+ $ERROR('#3: -1 / 1 === -1. Actual: ' + (-1 / 1));
+}
+
+//CHECK#4
+if (-1 / -1 !== 1) {
+ $ERROR('#4: -1 / -1 === 1. Actual: ' + (-1 / -1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T3.js
new file mode 100644
index 000000000..dc6dbf221
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T3;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: Division of an infinity by a zero results in an infinity of appropriate sign;
+ */
+
+//CHECK#1
+if (Number.NEGATIVE_INFINITY / 0 !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#1: Infinity / 0 === Infinity. Actual: ' + (Infinity / 0));
+}
+
+//CHECK#2
+if (Number.NEGATIVE_INFINITY / -0 !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2: -Infinity / -0 === Infinity. Actual: ' + (-Infinity / -0));
+}
+
+//CHECK#3
+if (Number.POSITIVE_INFINITY / 0 !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: Infinity / 0 === Infinity. Actual: ' + (Infinity / 0));
+}
+
+//CHECK#4
+if (Number.POSITIVE_INFINITY / -0 !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4: Infinity / -0 === -Infinity. Actual: ' + (Infinity / -0));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T4.js
new file mode 100644
index 000000000..1a6182216
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T4;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: Division of an infinity by an infinity results in NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NEGATIVE_INFINITY / Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#1: -Infinity / -Infinity === Not-a-Number. Actual: ' + (-Infinity / -Infinity));
+}
+
+//CHECK#2
+if (isNaN(Number.POSITIVE_INFINITY / Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#2: Infinity / Infinity === Not-a-Number. Actual: ' + (Infinity / Infinity));
+}
+
+//CHECK#3
+if (isNaN(Number.NEGATIVE_INFINITY / Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#3: -Infinity / Infinity === Not-a-Number. Actual: ' + (-Infinity / Infinity));
+}
+
+//CHECK#4
+if (isNaN(Number.POSITIVE_INFINITY / Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#4: Infinity / -Infinity === Not-a-Number. Actual: ' + (Infinity / -Infinity));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T5.js
new file mode 100644
index 000000000..6a7c8bee9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T5.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T5;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: Division of an infinity by a finite non-zero value results in a signed infinity;
+ */
+
+//CHECK#1
+if (Number.NEGATIVE_INFINITY / 1 !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#1: -Infinity / 1 === -Infinity. Actual: ' + (-Infinity / 1));
+}
+
+//CHECK#2
+if (Number.NEGATIVE_INFINITY / -1 !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2: -Infinity / -1 === Infinity. Actual: ' + (-Infinity / -1));
+}
+
+//CHECK#3
+if (Number.POSITIVE_INFINITY / 1 !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: Infinity / 1 === Infinity. Actual: ' + (Infinity / 1));
+}
+
+//CHECK#4
+if (Number.POSITIVE_INFINITY / -1 !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4: Infinity / -1 === -Infinity. Actual: ' + (Infinity / -1));
+}
+
+//CHECK#5
+if (Number.POSITIVE_INFINITY / -Number.MAX_VALUE !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#5: Infinity / -Number.MAX_VALUE === -Infinity. Actual: ' + (Infinity / -Number.MAX_VALUE));
+}
+
+//CHECK#6
+if (Number.NEGATIVE_INFINITY / Number.MIN_VALUE !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#6: -Infinity / Number.MIN_VALUE === -Infinity. Actual: ' + (-Infinity / Number.MIN_VALUE));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T6.js
new file mode 100644
index 000000000..f434ee651
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T6.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T6;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: Division of a finite value by an infinity results in zero of appropriate sign;
+ */
+
+//CHECK#1
+if (1 / Number.NEGATIVE_INFINITY !== -0) {
+ $ERROR('#1.1: 1 / -Infinity === 0. Actual: ' + (1 / -Infinity));
+} else {
+ if (1 / (1 / Number.NEGATIVE_INFINITY) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#1.2: 1 / -Infinity === - 0. Actual: +0');
+ }
+}
+
+//CHECK#2
+if (-1 / Number.NEGATIVE_INFINITY !== +0) {
+ $ERROR('#2.1: -1 / -Infinity === 0. Actual: ' + (-1 / -Infinity));
+} else {
+ if (1 / (-1 / Number.NEGATIVE_INFINITY) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: -1 / -Infinity === + 0. Actual: -0');
+ }
+}
+
+//CHECK#3
+if (1 / Number.POSITIVE_INFINITY !== +0) {
+ $ERROR('#3.1: 1 / Infinity === 0. Actual: ' + (1 / Infinity));
+} else {
+ if (1 / (1 / Number.POSITIVE_INFINITY) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3.2: 1 / Infinity === + 0. Actual: -0');
+ }
+}
+
+//CHECK#4
+if (-1 / Number.POSITIVE_INFINITY !== -0) {
+ $ERROR('#4.1: -1 / Infinity === 0. Actual: ' + (-1 / Infinity));
+} else {
+ if (1 / (-1 / Number.POSITIVE_INFINITY) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4.2: -1 / Infinity === - 0. Actual: +0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T7.js
new file mode 100644
index 000000000..ca31703ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T7;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: Division of a zero by a zero results in NaN;
+ */
+
+//CHECK#1
+if (isNaN(+0 / +0) !== true) {
+ $ERROR('#1: +0 / +0 === Not-a-Number. Actual: ' + (+0 / +0));
+}
+
+//CHECK#2
+if (isNaN(-0 / +0) !== true) {
+ $ERROR('#2: -0 / +0 === Not-a-Number. Actual: ' + (-0 / +0));
+}
+
+//CHECK#3
+if (isNaN(+0 / -0) !== true) {
+ $ERROR('#3: +0 / -0 === Not-a-Number. Actual: ' + (+0 / -0));
+}
+
+//CHECK#4
+if (isNaN(-0 / -0) !== true) {
+ $ERROR('#4: -0 / -0 === Not-a-Number. Actual: ' + (-0 / -0));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T8.js
new file mode 100644
index 000000000..dc036ef04
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T8.js
@@ -0,0 +1,63 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T8;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: Division of a zero by any non-zero finite value -0 results in zero of appropriate sign;
+ */
+
+//CHECK#1
+if (-0 / 1 !== -0) {
+ $ERROR('#1.1: -0 / 1 === 0. Actual: ' + (-0 / 1));
+} else {
+ if (1 / (-0 / 1) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#1.2: -0 / 1 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#2
+if (-0 / -1 !== +0) {
+ $ERROR('#2.1: -0 / -1 === 0. Actual: ' + (-0 / -1));
+} else {
+ if (1 / (-0 / -1) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: -0 / -1 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#3
+if (+0 / 1 !== +0) {
+ $ERROR('#3.1: +0 / 1 === 0. Actual: ' + (+0 / 1));
+} else {
+ if (1 / (+0 / -1) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3.2: +0 / -1 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#4
+if (+0 / -1 !== -0) {
+ $ERROR('#4.1: +0 / -1 === 0. Actual: ' + (+0 / -1));
+} else {
+ if (1 / (+0 / -1) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4.2: +0 / -1 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#5
+if (+0 / -Number.MAX_VALUE !== -0) {
+ $ERROR('#5.1: 0 / -Number.MAX_VALUE === 0. Actual: ' + (0 / -Number.MAX_VALUE));
+} else {
+ if (1 / (+0 / -Number.MAX_VALUE) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#5.2: +0 / -Number.MAX_VALUE === - 0. Actual: +0');
+ }
+}
+
+//CHECK#6
+if (-0 / Number.MIN_VALUE !== -0) {
+ $ERROR('#6.1: -0 / Number.MIN_VALUE === 0. Actual: ' + (-0 / Number.MIN_VALUE));
+} else {
+ if (1 / (-0 / Number.MIN_VALUE) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#6.2: -0 / Number.MIN_VALUE === - 0. Actual: +0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T9.js
new file mode 100644
index 000000000..2e50bf15b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.2_Applying_the_slash_Operator/S11.5.2_A4_T9.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.2_A4_T9;
+ * @section: 11.5.2;
+ * @assertion: The result of division is determined by the specification of IEEE 754 arithmetics;
+ * @description: If the magnitude is too large to represent, the result is then an infinity of appropriate sign;
+ */
+
+//CHECK#1
+if (Number.MAX_VALUE / 0.9 !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: Number.MAX_VALUE / 0.9 === Number.POSITIVE_INFINITY. Actual: ' + (Number.MAX_VALUE / 0.9));
+}
+
+//CHECK#2
+if (Number.MAX_VALUE / -0.9 !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#2: Number.MAX_VALUE / -0.9 === Number.NEGATIVE_INFINITY. Actual: ' + (Number.MAX_VALUE / -0.9));
+}
+
+//CHECK#3
+if (Number.MAX_VALUE / 1 !== Number.MAX_VALUE) {
+ $ERROR('#3: Number.MAX_VALUE / 1 === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE / 1));
+}
+
+//CHECK#4
+if (Number.MAX_VALUE / -1 !== -Number.MAX_VALUE) {
+ $ERROR('#4: Number.MAX_VALUE / -1 === -Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE / -1));
+}
+
+//CHECK#5
+if (Number.MAX_VALUE / (Number.MAX_VALUE / 0.9) === (Number.MAX_VALUE / Number.MAX_VALUE) / 0.9) {
+ $ERROR('#5: Number.MAX_VALUE / (Number.MAX_VALUE / 0.9) !== (Number.MAX_VALUE / Number.MAX_VALUE) / 0.9');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A1.js
new file mode 100644
index 000000000..a555ffb41
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.5.3_A1;
+* @section: 11.5.3, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between MultiplicativeExpression and "%" or between "%" and UnaryExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("1\u0009%\u00091") !== 0) {
+ $ERROR('#1: 1\\u0009%\\u00091 === 0');
+}
+
+//CHECK#2
+if (eval("1\u000B%\u000B1") !== 0) {
+ $ERROR('#2: 1\\u000B%\\u000B1 === 0');
+}
+
+//CHECK#3
+if (eval("1\u000C%\u000C1") !== 0) {
+ $ERROR('#3: 1\\u000C%\\u000C1 === 0');
+}
+
+//CHECK#4
+if (eval("1\u0020%\u00201") !== 0) {
+ $ERROR('#4: 1\\u0020%\\u00201 === 0');
+}
+
+//CHECK#5
+if (eval("1\u00A0%\u00A01") !== 0) {
+ $ERROR('#5: 1\\u00A0%\\u00A01 === 0');
+}
+
+//CHECK#6
+if (eval("1\u000A%\u000A1") !== 0) {
+ $ERROR('#6: 1\\u000A%\\u000A1 === 0');
+}
+
+//CHECK#7
+if (eval("1\u000D%\u000D1") !== 0) {
+ $ERROR('#7: 1\\u000D%\\u000D1 === 0');
+}
+
+//CHECK#8
+if (eval("1\u2028%\u20281") !== 0) {
+ $ERROR('#8: 1\\u2028%\\u20281 === 0');
+}
+
+//CHECK#9
+if (eval("1\u2029%\u20291") !== 0) {
+ $ERROR('#9: 1\\u2029%\\u20291 === 0');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029%\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== 0) {
+ $ERROR('#10: 1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029%\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T1.js
new file mode 100644
index 000000000..3b42f3937
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A2.1_T1;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (1 % 2 !== 1) {
+ $ERROR('#1: 1 % 2 === 1. Actual: ' + (1 % 2));
+}
+
+//CHECK#2
+var x = 1;
+if (x % 2 !== 1) {
+ $ERROR('#2: var x = 1; x % 2 === 1. Actual: ' + (x % 2));
+}
+
+//CHECK#3
+var y = 2;
+if (1 % y !== 1) {
+ $ERROR('#3: var y = 2; 1 % y === 1. Actual: ' + (1 % y));
+}
+
+//CHECK#4
+var x = 1;
+var y = 2;
+if (x % y !== 1) {
+ $ERROR('#4: var x = 1; var y = 2; x % y === 1. Actual: ' + (x % y));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 2;
+if (objectx.prop % objecty.prop !== 1) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 2; objectx.prop % objecty.prop === 1. Actual: ' + (objectx.prop % objecty.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T2.js
new file mode 100644
index 000000000..9c6d191b9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A2.1_T2;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x % 1;
+ $ERROR('#1.1: x % 1 throw ReferenceError. Actual: ' + (x % 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x % 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T3.js
new file mode 100644
index 000000000..4909c5c25
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A2.1_T3;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 % y;
+ $ERROR('#1.1: 1 % y throw ReferenceError. Actual: ' + (1 % y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 % y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.2_T1.js
new file mode 100644
index 000000000..4a93da786
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A2.2_T1;
+ * @section: 11.5.3, 8.6.2.6;
+ * @assertion: Operator x % y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return 1}} % 2 !== 1) {
+ $ERROR('#1: {valueOf: function() {return 1}} % 2 === 1. Actual: ' + ({valueOf: function() {return 1}} % 2));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 1}, toString: function() {return 0}} % 2 !== 1) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 0}} % 2 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 0}} % 2));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 1}, toString: function() {return {}}} % 2 !== 1) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} % 2 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} % 2));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 1}, toString: function() {throw "error"}} % 2 !== 1) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} % 2 === 1. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} % 2));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 1}, toString: function() {throw "error"}} % 2 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 1}, toString: function() {throw "error"}} % 2 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 % {toString: function() {return 2}} !== 1) {
+ $ERROR('#5: 1 % {toString: function() {return 2}} === 1. Actual: ' + (1 % {toString: function() {return 2}}));
+}
+
+//CHECK#6
+if (1 % {valueOf: function() {return {}}, toString: function() {return 2}} !== 1) {
+ $ERROR('#6: 1 % {valueOf: function() {return {}}, toString: function() {return 2}} === 1. Actual: ' + (1 % {valueOf: function() {return {}}, toString: function() {return 2}}));
+}
+
+//CHECK#7
+try {
+ 1 % {valueOf: function() {throw "error"}, toString: function() {return 2}};
+ $ERROR('#7.1: 1 % {valueOf: function() {throw "error"}, toString: function() {return 2}} throw "error". Actual: ' + (1 % {valueOf: function() {throw "error"}, toString: function() {return 2}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 % {valueOf: function() {throw "error"}, toString: function() {return 2}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 % {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 % {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 % {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 % {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.3_T1.js
new file mode 100644
index 000000000..020b35aba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A2.3_T1;
+ * @section: 11.5.3;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x % y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x % y throw "x". Actual: ' + (x % y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToNumber(first expression) is called first, and then ToNumber(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x % y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T1.js
new file mode 100644
index 000000000..db2bd5ef9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A2.4_T1;
+ * @section: 11.5.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) % x !== 0) {
+ $ERROR('#1: var x = 0; (x = 1) % x === 0. Actual: ' + ((x = 1) % x));
+}
+
+//CHECK#2
+var x = 1;
+if (x % (x = 2) !== 1) {
+ $ERROR('#2: var x = 1; x % (x = 2) === 1. Actual: ' + (x % (x = 2)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T2.js
new file mode 100644
index 000000000..32a86260f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A2.4_T2;
+ * @section: 11.5.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() % y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() % y() throw "x". Actual: ' + (x() % y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() % y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T3.js
new file mode 100644
index 000000000..dc8dbb05f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A2.4_T3;
+ * @section: 11.5.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x % (x = 1);
+ $ERROR('#1.1: x % (x = 1) throw ReferenceError. Actual: ' + (x % (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x % (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) % y !== 0) {
+ $ERROR('#2: (y = 1) % y === 0. Actual: ' + ((y = 1) % y));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.1.js
new file mode 100644
index 000000000..c84322135
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T1.1;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true % true !== 0) {
+ $ERROR('#1: true % true === 0. Actual: ' + (true % true));
+}
+
+//CHECK#2
+if (new Boolean(true) % true !== 0) {
+ $ERROR('#2: new Boolean(true) % true === 0. Actual: ' + (new Boolean(true) % true));
+}
+
+//CHECK#3
+if (true % new Boolean(true) !== 0) {
+ $ERROR('#3: true % new Boolean(true) === 0. Actual: ' + (true % new Boolean(true)));
+}
+
+//CHECK#4
+if (new Boolean(true) % new Boolean(true) !== 0) {
+ $ERROR('#4: new Boolean(true) % new Boolean(true) === 0. Actual: ' + (new Boolean(true) % new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.2.js
new file mode 100644
index 000000000..c9102d222
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T1.2;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 % 1 !== 0) {
+ $ERROR('#1: 1 % 1 === 0. Actual: ' + (1 % 1));
+}
+
+//CHECK#2
+if (new Number(1) % 1 !== 0) {
+ $ERROR('#2: new Number(1) % 1 === 0. Actual: ' + (new Number(1) % 1));
+}
+
+//CHECK#3
+if (1 % new Number(1) !== 0) {
+ $ERROR('#3: 1 % new Number(1) === 0. Actual: ' + (1 % new Number(1)));
+}
+
+//CHECK#4
+if (new Number(1) % new Number(1) !== 0) {
+ $ERROR('#4: new Number(1) % new Number(1) === 0. Actual: ' + (new Number(1) % new Number(1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.3.js
new file mode 100644
index 000000000..911b28a84
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T1.3;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" % "1" !== 0) {
+ $ERROR('#1: "1" % "1" === 0. Actual: ' + ("1" % "1"));
+}
+
+//CHECK#2
+if (new String("1") % "1" !== 0) {
+ $ERROR('#2: new String("1") % "1" === 0. Actual: ' + (new String("1") % "1"));
+}
+
+//CHECK#3
+if ("1" % new String("1") !== 0) {
+ $ERROR('#3: "1" % new String("1") === 0. Actual: ' + ("1" % new String("1")));
+}
+
+//CHECK#4
+if (new String("1") % new String("1") !== 0) {
+ $ERROR('#4: new String("1") % new String("1") === 0. Actual: ' + (new String("1") % new String("1")));
+}
+
+//CHECK#5
+if (isNaN("x" % "1") !== true) {
+ $ERROR('#5: "x" % "1" === Not-a-Number. Actual: ' + ("x" % "1"));
+}
+
+//CHECK#6
+if (isNaN("1" % "x") !== true) {
+ $ERROR('#6: "1" % "x" === Not-a-Number. Actual: ' + ("1" % "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.4.js
new file mode 100644
index 000000000..52cfb6fe0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T1.4;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(null % undefined) !== true) {
+ $ERROR('#1: null % undefined === Not-a-Number. Actual: ' + (null % undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined % null) !== true) {
+ $ERROR('#2: undefined % null === Not-a-Number. Actual: ' + (undefined % null));
+}
+
+//CHECK#3
+if (isNaN(undefined % undefined) !== true) {
+ $ERROR('#3: undefined % undefined === Not-a-Number. Actual: ' + (undefined % undefined));
+}
+
+//CHECK#4
+if (isNaN(null % null) !== true) {
+ $ERROR('#4: null % null === Not-a-Number. Actual: ' + (null % null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.5.js
new file mode 100644
index 000000000..f92f72379
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T1.5.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T1.5;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (isNaN({} % function(){return 1}) !== true) {
+ $ERROR('#1: {} % function(){return 1} === Not-a-Number. Actual: ' + ({} % function(){return 1}));
+}
+
+//CHECK#2
+if (isNaN(function(){return 1} % {}) !== true) {
+ $ERROR('#2: function(){return 1} % {} === Not-a-Number. Actual: ' + (function(){return 1} % {}));
+}
+
+//CHECK#3
+if (isNaN(function(){return 1} % function(){return 1}) !== true) {
+ $ERROR('#3: function(){return 1} % function(){return 1} === Not-a-Number. Actual: ' + (function(){return 1} % function(){return 1}));
+}
+
+//CHECK#4
+if (isNaN({} % {}) !== true) {
+ $ERROR('#4: {} % {} === Not-a-Number. Actual: ' + ({} % {}));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.1.js
new file mode 100644
index 000000000..cca4f1320
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T2.1;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true % 1 !== 0) {
+ $ERROR('#1: true % 1 === 0. Actual: ' + (true % 1));
+}
+
+//CHECK#2
+if (1 % true !== 0) {
+ $ERROR('#2: 1 % true === 0. Actual: ' + (1 % true));
+}
+
+//CHECK#3
+if (new Boolean(true) % 1 !== 0) {
+ $ERROR('#3: new Boolean(true) % 1 === 0. Actual: ' + (new Boolean(true) % 1));
+}
+
+//CHECK#4
+if (1 % new Boolean(true) !== 0) {
+ $ERROR('#4: 1 % new Boolean(true) === 0. Actual: ' + (1 % new Boolean(true)));
+}
+
+//CHECK#5
+if (true % new Number(1) !== 0) {
+ $ERROR('#5: true % new Number(1) === 0. Actual: ' + (true % new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) % true !== 0) {
+ $ERROR('#6: new Number(1) % true === 0. Actual: ' + (new Number(1) % true));
+}
+
+//CHECK#7
+if (new Boolean(true) % new Number(1) !== 0) {
+ $ERROR('#7: new Boolean(true) % new Number(1) === 0. Actual: ' + (new Boolean(true) % new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) % new Boolean(true) !== 0) {
+ $ERROR('#8: new Number(1) % new Boolean(true) === 0. Actual: ' + (new Number(1) % new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.2.js
new file mode 100644
index 000000000..913ae9a87
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T2.2;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" % 1 !== 0) {
+ $ERROR('#1: "1" % 1 === 0. Actual: ' + ("1" % 1));
+}
+
+//CHECK#2
+if (1 % "1" !== 0) {
+ $ERROR('#2: 1 % "1" === 0. Actual: ' + (1 % "1"));
+}
+
+//CHECK#3
+if (new String("1") % 1 !== 0) {
+ $ERROR('#3: new String("1") % 1 === 0. Actual: ' + (new String("1") % 1));
+}
+
+//CHECK#4
+if (1 % new String("1") !== 0) {
+ $ERROR('#4: 1 % new String("1") === 0. Actual: ' + (1 % new String("1")));
+}
+
+//CHECK#5
+if ("1" % new Number(1) !== 0) {
+ $ERROR('#5: "1" % new Number(1) === 0. Actual: ' + ("1" % new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) % "1" !== 0) {
+ $ERROR('#6: new Number(1) % "1" === 0. Actual: ' + (new Number(1) % "1"));
+}
+
+//CHECK#7
+if (new String("1") % new Number(1) !== 0) {
+ $ERROR('#7: new String("1") % new Number(1) === 0. Actual: ' + (new String("1") % new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) % new String("1") !== 0) {
+ $ERROR('#8: new Number(1) % new String("1") === 0. Actual: ' + (new Number(1) % new String("1")));
+}
+
+//CHECK#9
+if (isNaN("x" % 1) !== true) {
+ $ERROR('#9: "x" % 1 === Not-a-Number. Actual: ' + ("x" % 1));
+}
+
+//CHECK#10
+if (isNaN(1 % "x") !== true) {
+ $ERROR('#10: 1 % "x" === Not-a-Number. Actual: ' + (1 % "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.3.js
new file mode 100644
index 000000000..a9b9eb3b2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T2.3;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (isNaN(1 % null) !== true) {
+ $ERROR('#1: 1 % null === Not-a-Number. Actual: ' + (1 % null));
+}
+
+//CHECK#2
+if (null % 1 !== 0) {
+ $ERROR('#2: null % 1 === 0. Actual: ' + (null % 1));
+}
+
+//CHECK#3
+if (isNaN(new Number(1) % null) !== true) {
+ $ERROR('#3: new Number(1) % null === Not-a-Number. Actual: ' + (new Number(1) % null));
+}
+
+//CHECK#4
+if (null % new Number(1) !== 0) {
+ $ERROR('#4: null % new Number(1) === 0. Actual: ' + (null % new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.4.js
new file mode 100644
index 000000000..3b9cc04ac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T2.4;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(1 % undefined) !== true) {
+ $ERROR('#1: 1 % undefined === Not-a-Number. Actual: ' + (1 % undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined % 1) !== true) {
+ $ERROR('#2: undefined % 1 === Not-a-Number. Actual: ' + (undefined % 1));
+}
+
+//CHECK#3
+if (isNaN(new Number(1) % undefined) !== true) {
+ $ERROR('#3: new Number(1) % undefined === Not-a-Number. Actual: ' + (new Number(1) % undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined % new Number(1)) !== true) {
+ $ERROR('#4: undefined % new Number(1) === Not-a-Number. Actual: ' + (undefined % new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.5.js
new file mode 100644
index 000000000..36384b748
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T2.5;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true % "1" !== 0) {
+ $ERROR('#1: true % "1" === 0. Actual: ' + (true % "1"));
+}
+
+//CHECK#2
+if ("1" % true !== 0) {
+ $ERROR('#2: "1" % true === 0. Actual: ' + ("1" % true));
+}
+
+//CHECK#3
+if (new Boolean(true) % "1" !== 0) {
+ $ERROR('#3: new Boolean(true) % "1" === 0. Actual: ' + (new Boolean(true) % "1"));
+}
+
+//CHECK#4
+if ("1" % new Boolean(true) !== 0) {
+ $ERROR('#4: "1" % new Boolean(true) === 0. Actual: ' + ("1" % new Boolean(true)));
+}
+
+//CHECK#5
+if (true % new String("1") !== 0) {
+ $ERROR('#5: true % new String("1") === 0. Actual: ' + (true % new String("1")));
+}
+
+//CHECK#6
+if (new String("1") % true !== 0) {
+ $ERROR('#6: new String("1") % true === 0. Actual: ' + (new String("1") % true));
+}
+
+//CHECK#7
+if (new Boolean(true) % new String("1") !== 0) {
+ $ERROR('#7: new Boolean(true) % new String("1") === 0. Actual: ' + (new Boolean(true) % new String("1")));
+}
+
+//CHECK#8
+if (new String("1") % new Boolean(true) !== 0) {
+ $ERROR('#8: new String("1") % new Boolean(true) === 0. Actual: ' + (new String("1") % new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.6.js
new file mode 100644
index 000000000..7f68dd47c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T2.6;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN("1" % undefined) !== true) {
+ $ERROR('#1: "1" % undefined === Not-a-Number. Actual: ' + ("1" % undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined % "1") !== true) {
+ $ERROR('#2: undefined % "1" === Not-a-Number. Actual: ' + (undefined % "1"));
+}
+
+//CHECK#3
+if (isNaN(new String("1") % undefined) !== true) {
+ $ERROR('#3: new String("1") % undefined === Not-a-Number. Actual: ' + (new String("1") % undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined % new String("1")) !== true) {
+ $ERROR('#4: undefined % new String("1") === Not-a-Number. Actual: ' + (undefined % new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.7.js
new file mode 100644
index 000000000..2d1a269fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T2.7;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (isNaN("1" % null) !== true) {
+ $ERROR('#1: "1" % null === Not-a-Number. Actual: ' + ("1" % null));
+}
+
+//CHECK#2
+if (null % "1" !== 0) {
+ $ERROR('#2: null % "1" === 0. Actual: ' + (null % "1"));
+}
+
+//CHECK#3
+if (isNaN(new String("1") % null) !== true) {
+ $ERROR('#3: new String("1") % null === Not-a-Number. Actual: ' + (new String("1") % null));
+}
+
+//CHECK#4
+if (null % new String("1") !== 0) {
+ $ERROR('#4: null % new String("1") === 0. Actual: ' + (null % new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.8.js
new file mode 100644
index 000000000..329ec0b55
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T2.8;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(true % undefined) !== true) {
+ $ERROR('#1: true % undefined === Not-a-Number. Actual: ' + (true % undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined % true) !== true) {
+ $ERROR('#2: undefined % true === Not-a-Number. Actual: ' + (undefined % true));
+}
+
+//CHECK#3
+if (isNaN(new Boolean(true) % undefined) !== true) {
+ $ERROR('#3: new Boolean(true) % undefined === Not-a-Number. Actual: ' + (new Boolean(true) % undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined % new Boolean(true)) !== true) {
+ $ERROR('#4: undefined % new Boolean(true) === Not-a-Number. Actual: ' + (undefined % new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.9.js
new file mode 100644
index 000000000..60d429368
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A3_T2.9;
+ * @section: 11.5.3;
+ * @assertion: Operator x % y returns ToNumber(x) % ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (isNaN(true % null) !== true) {
+ $ERROR('#1: true % null === Not-a-Number. Actual: ' + (true % null));
+}
+
+//CHECK#2
+if (null % true !== 0) {
+ $ERROR('#2: null % true === 0. Actual: ' + (null % true));
+}
+
+//CHECK#3
+if (isNaN(new Boolean(true) % null) !== true) {
+ $ERROR('#3: new Boolean(true) % null === Not-a-Number. Actual: ' + (new Boolean(true) % null));
+}
+
+//CHECK#4
+if (null % new Boolean(true) !== 0) {
+ $ERROR('#4: null % new Boolean(true) === 0. Actual: ' + (null % new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T1.1.js
new file mode 100644
index 000000000..a1c5de927
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T1.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A4_T1.1;
+ * @section: 11.5.3;
+ * @assertion: The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics;
+ * @description: If either operand is NaN, the result is NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NaN % Number.NaN) !== true) {
+ $ERROR('#1: NaN % NaN === Not-a-Number. Actual: ' + (NaN % NaN));
+}
+
+//CHECK#2
+if (isNaN(Number.NaN % +0) !== true) {
+ $ERROR('#2: NaN % +0 === Not-a-Number. Actual: ' + (NaN % +0));
+}
+
+//CHECK#3
+if (isNaN(Number.NaN % -0) !== true) {
+ $ERROR('#3: NaN % -0 === Not-a-Number. Actual: ' + (NaN % -0));
+}
+
+//CHECK#4
+if (isNaN(Number.NaN % Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#4: NaN % Infinity === Not-a-Number. Actual: ' + (NaN % Infinity));
+}
+
+//CHECK#5
+if (isNaN(Number.NaN % Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#5: NaN % -Infinity === Not-a-Number. Actual: ' + (NaN % -Infinity));
+}
+
+//CHECK#6
+if (isNaN(Number.NaN % Number.MAX_VALUE) !== true) {
+ $ERROR('#6: NaN % Number.MAX_VALUE === Not-a-Number. Actual: ' + (NaN % Number.MAX_VALUE));
+}
+
+//CHECK#7
+if (isNaN(Number.NaN % Number.MIN_VALUE) !== true) {
+ $ERROR('#7: NaN % Number.MIN_VALUE === Not-a-Number. Actual: ' + (NaN % Number.MIN_VALUE));
+}
+
+//CHECK#8
+if (isNaN(Number.NaN % 1) !== true) {
+ $ERROR('#8: NaN % 1 === Not-a-Number. Actual: ' + (NaN % 1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T1.2.js
new file mode 100644
index 000000000..4cf8777e0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T1.2.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A4_T1.2;
+ * @section: 11.5.3;
+ * @assertion: The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics;
+ * @description: If either operand is NaN, the result is NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NaN % Number.NaN) !== true) {
+ $ERROR('#1: NaN % NaN === Not-a-Number. Actual: ' + (NaN % NaN));
+}
+
+//CHECK#2
+if (isNaN(+0 % Number.NaN) !== true) {
+ $ERROR('#2: +0 % NaN === Not-a-Number. Actual: ' + (+0 % NaN));
+}
+
+//CHECK#3
+if (isNaN(-0 % Number.NaN) !== true) {
+ $ERROR('#3: -0 % NaN === Not-a-Number. Actual: ' + (-0 % NaN));
+}
+
+//CHECK#4
+if (isNaN(Number.POSITIVE_INFINITY % Number.NaN) !== true) {
+ $ERROR('#4: Infinity % NaN === Not-a-Number. Actual: ' + (Infinity % NaN));
+}
+
+//CHECK#5
+if (isNaN(Number.NEGATIVE_INFINITY % Number.NaN) !== true) {
+ $ERROR('#5: -Infinity % NaN === Not-a-Number. Actual: ' + ( -Infinity % NaN));
+}
+
+//CHECK#6
+if (isNaN(Number.MAX_VALUE % Number.NaN) !== true) {
+ $ERROR('#6: Number.MAX_VALUE % NaN === Not-a-Number. Actual: ' + (Number.MAX_VALUE % NaN));
+}
+
+//CHECK#7
+if (isNaN(Number.MIN_VALUE % Number.NaN) !== true) {
+ $ERROR('#7: Number.MIN_VALUE % NaN === Not-a-Number. Actual: ' + (Number.MIN_VALUE % NaN));
+}
+
+//CHECK#8
+if (isNaN(1 % Number.NaN) !== true) {
+ $ERROR('#8: 1 % NaN === Not-a-Number. Actual: ' + (1 % NaN));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T2.js
new file mode 100644
index 000000000..8cd1a59e0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T2.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A4_T2;
+ * @section: 11.5.3;
+ * @assertion: The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics;
+ * @description: The sign of the finite non-zero value result equals the sign of the divided;
+ */
+
+//CHECK#1
+if (1 % 1 !== 0) {
+ $ERROR('#1.1: 1 % 1 === 0. Actual: ' + (1 % 1));
+} else {
+ if (1 / (1 % 1) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: 1 % 1 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#2
+if (-1 % -1 !== -0) {
+ $ERROR('#2.1: -1 % -1 === 0. Actual: ' + (-1 % -1));
+} else {
+ if (1 / (-1 % -1) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#2.2: -1 % -1 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#3
+if (-1 % 1 !== -0) {
+ $ERROR('#3.1: -1 % 1 === 0. Actual: ' + (-1 % 1));
+} else {
+ if (1 / (-1 % 1) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3.2: -1 % 1 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#4
+if (1 % -1 !== 0) {
+ $ERROR('#4.1: 1 % -1 === 0. Actual: ' + (1 % -1));
+} else {
+ if (1 / (1 % -1) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4.2: 1 % -1 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#5
+if (101 % 51 !== 50) {
+ $ERROR('#5: 101 % 51 === 50. Actual: ' + (101 % 51));
+}
+
+//CHECK#6
+if (101 % -51 !== 50) {
+ $ERROR('#6: 101 % -51 === 50. Actual: ' + (101 % -51));
+}
+
+//CHECK#7
+if (-101 % 51 !== -50) {
+ $ERROR('#7: -101 % 51 === -50. Actual: ' + (-101 % 51));
+}
+
+//CHECK#8
+if (-101 % -51 !== -50) {
+ $ERROR('#8: -101 % -51 === -50. Actual: ' + (-101 % -51));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T3.js
new file mode 100644
index 000000000..e7fc9f3d2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T3.js
@@ -0,0 +1,69 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A4_T3;
+ * @section: 11.5.3;
+ * @assertion: The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics;
+ * @description: If the dividend is an infinity results is NaN;
+ */
+
+//CHECK#1
+if (isNaN(Number.NEGATIVE_INFINITY % Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#1: -Infinity % Infinity === Not-a-Number. Actual: ' + (-Infinity % Infinity));
+}
+
+//CHECK#2
+if (isNaN(Number.NEGATIVE_INFINITY % Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#2: -Infinity % -Infinity === Not-a-Number. Actual: ' + (-Infinity % -Infinity));
+}
+
+//CHECK#3
+if (isNaN(Number.POSITIVE_INFINITY % Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#3: Infinity % Infinity === Not-a-Number. Actual: ' + (Infinity % Infinity));
+}
+
+//CHECK#4
+if (isNaN(Number.POSITIVE_INFINITY % Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#4: Infinity % -Infinity === Not-a-Number. Actual: ' + (Infinity % -Infinity));
+}
+
+//CHECK#5
+if (isNaN(Number.NEGATIVE_INFINITY % 1) !== true) {
+ $ERROR('#5: Infinity % 1 === Not-a-Number. Actual: ' + (Infinity % 1));
+}
+
+//CHECK#6
+if (isNaN(Number.NEGATIVE_INFINITY % -1) !== true) {
+ $ERROR('#6: -Infinity % -1 === Not-a-Number. Actual: ' + (-Infinity % -1));
+}
+
+//CHECK#7
+if (isNaN(Number.POSITIVE_INFINITY % 1) !== true) {
+ $ERROR('#7: Infinity % 1 === Not-a-Number. Actual: ' + (Infinity % 1));
+}
+
+//CHECK#8
+if (isNaN(Number.POSITIVE_INFINITY % -1) !== true) {
+ $ERROR('#8: Infinity % -1 === Not-a-Number. Actual: ' + (Infinity % -1));
+}
+
+//CHECK#9
+if (isNaN(Number.NEGATIVE_INFINITY % Number.MAX_VALUE) !== true) {
+ $ERROR('#9: Infinity % Number.MAX_VALUE === Not-a-Number. Actual: ' + (Infinity % Number.MAX_VALUE));
+}
+
+//CHECK#10
+if (isNaN(Number.NEGATIVE_INFINITY % -Number.MAX_VALUE) !== true) {
+ $ERROR('#10: -Infinity % -Number.MAX_VALUE === Not-a-Number. Actual: ' + (-Infinity % -Number.MAX_VALUE));
+}
+
+//CHECK#11
+if (isNaN(Number.POSITIVE_INFINITY % Number.MAX_VALUE) !== true) {
+ $ERROR('#11: Infinity % Number.MAX_VALUE === Not-a-Number. Actual: ' + (Infinity % Number.MAX_VALUE));
+}
+
+//CHECK#12
+if (isNaN(Number.POSITIVE_INFINITY % -Number.MAX_VALUE) !== true) {
+ $ERROR('#12: Infinity % -Number.MAX_VALUE === Not-a-Number. Actual: ' + (Infinity % -Number.MAX_VALUE));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T4.js
new file mode 100644
index 000000000..f0405f3b8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T4.js
@@ -0,0 +1,89 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A4_T4;
+ * @section: 11.5.3;
+ * @assertion: The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics;
+ * @description: If the divisor is zero results is NaN;
+ */
+
+//CHECK#1
+if (isNaN(-0 % 0) !== true) {
+ $ERROR('#1: -0 % 0 === Not-a-Number. Actual: ' + (-0 % 0));
+}
+
+//CHECK#2
+if (isNaN(-0 % -0) !== true) {
+ $ERROR('#2: -0 % -0 === Not-a-Number. Actual: ' + (-0 % -0));
+}
+
+//CHECK#3
+if (isNaN(0 % 0) !== true) {
+ $ERROR('#3: 0 % 0 === Not-a-Number. Actual: ' + (0 % 0));
+}
+
+//CHECK#4
+if (isNaN(0 % -0) !== true) {
+ $ERROR('#4: 0 % -0 === Not-a-Number. Actual: ' + (0 % -0));
+}
+
+//CHECK#5
+if (isNaN(-1 % 0) !== true) {
+ $ERROR('#5: 1 % 0 === Not-a-Number. Actual: ' + (1 % 0));
+}
+
+//CHECK#6
+if (isNaN(-1 % -0) !== true) {
+ $ERROR('#6: -1 % -0 === Not-a-Number. Actual: ' + (-1 % -0));
+}
+
+//CHECK#7
+if (isNaN(1 % 0) !== true) {
+ $ERROR('#7: 1 % 0 === Not-a-Number. Actual: ' + (1 % 0));
+}
+
+//CHECK#8
+if (isNaN(1 % -0) !== true) {
+ $ERROR('#8: 1 % -0 === Not-a-Number. Actual: ' + (1 % -0));
+}
+
+//CHECK#9
+if (isNaN(Number.NEGATIVE_INFINITY % 0) !== true) {
+ $ERROR('#9: Infinity % 0 === Not-a-Number. Actual: ' + (Infinity % 0));
+}
+
+//CHECK#10
+if (isNaN(Number.NEGATIVE_INFINITY % -0) !== true) {
+ $ERROR('#10: -Infinity % -0 === Not-a-Number. Actual: ' + (-Infinity % -0));
+}
+
+//CHECK#11
+if (isNaN(Number.POSITIVE_INFINITY % 0) !== true) {
+ $ERROR('#11: Infinity % 0 === Not-a-Number. Actual: ' + (Infinity % 0));
+}
+
+//CHECK#12
+if (isNaN(Number.POSITIVE_INFINITY % -0) !== true) {
+ $ERROR('#12: Infinity % -0 === Not-a-Number. Actual: ' + (Infinity % -0));
+}
+
+//CHECK#13
+if (isNaN(Number.MIN_VALUE % 0) !== true) {
+ $ERROR('#13: Number.MIN_VALUE % 0 === Not-a-Number. Actual: ' + (Number.MIN_VALUE % 0));
+}
+
+//CHECK#14
+if (isNaN(Number.MIN_VALUE % -0) !== true) {
+ $ERROR('#14: -Number.MIN_VALUE % -0 === Not-a-Number. Actual: ' + (-Number.MIN_VALUE % -0));
+}
+
+//CHECK#15
+if (isNaN(Number.MAX_VALUE % 0) !== true) {
+ $ERROR('#15: Number.MAX_VALUE % 0 === Not-a-Number. Actual: ' + (Number.MAX_VALUE % 0));
+}
+
+//CHECK#16
+if (isNaN(Number.MAX_VALUE % -0) !== true) {
+ $ERROR('#16: Number.MAX_VALUE % -0 === Not-a-Number. Actual: ' + (Number.MAX_VALUE % -0));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T5.js
new file mode 100644
index 000000000..c0b07dc11
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T5.js
@@ -0,0 +1,103 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A4_T5;
+ * @section: 11.5.3;
+ * @assertion: The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics;
+ * @description: If dividend is finite and the divisor is an infinity, the result equals the dividend;
+ */
+
+//CHECK#1
+if (1 % Number.NEGATIVE_INFINITY !== 1) {
+ $ERROR('#1: 1 % -Infinity === 1. Actual: ' + (1 % -Infinity));
+}
+//CHECK#2
+if (1 % Number.POSITIVE_INFINITY !==1) {
+ $ERROR('#2: 1 % Infinity === 1. Actual: ' + (1 % Infinity));
+}
+
+//CHECK#3
+if (-1 % Number.POSITIVE_INFINITY !== -1) {
+ $ERROR('#3: -1 % Infinity === -1. Actual: ' + (-1 % Infinity));
+}
+
+//CHECK#4
+if (-1 % Number.NEGATIVE_INFINITY !== -1) {
+ $ERROR('#4: -1 % -Infinity === -1. Actual: ' + (-1 % -Infinity));
+}
+
+//CHECK#5
+if (0 % Number.POSITIVE_INFINITY !== 0) {
+ $ERROR('#5.1: 0 % Infinity === 0. Actual: ' + (0 % Infinity));
+} else {
+ if (1 / (0 % Number.POSITIVE_INFINITY) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5.2: 0 % Infinity === + 0. Actual: -0');
+ }
+}
+
+//CHECK#6
+if (0 % Number.NEGATIVE_INFINITY !== 0) {
+ $ERROR('#6.1: 0 % -Infinity === 0. Actual: ' + (0 % -Infinity));
+} else {
+ if (1 / (0 % Number.NEGATIVE_INFINITY) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#6.2: 0 % -Infinity === + 0. Actual: -0');
+ }
+}
+
+//CHECK#7
+if (-0 % Number.POSITIVE_INFINITY !== -0) {
+ $ERROR('#7.1: -0 % Infinity === 0. Actual: ' + (-0 % Infinity));
+} else {
+ if (1 / (-0 % Number.POSITIVE_INFINITY) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#7.2: -0 % Infinity === - 0. Actual: +0');
+ }
+}
+
+//CHECK#8
+if (-0 % Number.NEGATIVE_INFINITY !== -0) {
+ $ERROR('#8.1: -0 % -Infinity === 0. Actual: ' + (-0 % -Infinity));
+} else {
+ if (1 / (-0 % Number.NEGATIVE_INFINITY) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#8.2: -0 % -Infinity === - 0. Actual: +0');
+ }
+}
+
+//CHECK#9
+if (Number.MAX_VALUE % Number.NEGATIVE_INFINITY !== Number.MAX_VALUE) {
+ $ERROR('#9: Number.MAX_VALUE % -Infinity === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE % -Infinity));
+}
+
+//CHECK#10
+if (Number.MAX_VALUE % Number.POSITIVE_INFINITY !== Number.MAX_VALUE) {
+ $ERROR('#10: Number.MAX_VALUE % Infinity === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE % Infinity));
+}
+
+//CHECK#11
+if (-Number.MAX_VALUE % Number.POSITIVE_INFINITY !== -Number.MAX_VALUE) {
+ $ERROR('#11: -Number.MAX_VALUE % Infinity === -Number.MAX_VALUE. Actual: ' + (-Number.MAX_VALUE % Infinity));
+}
+
+//CHECK#12
+if (-Number.MAX_VALUE % Number.NEGATIVE_INFINITY !== -Number.MAX_VALUE) {
+ $ERROR('#12: -Number.MAX_VALUE % -Infinity === -Number.MAX_VALUE. Actual: ' + (-Number.MAX_VALUE % -Infinity));
+}
+
+//CHECK#13
+if (Number.MIN_VALUE % Number.NEGATIVE_INFINITY !== Number.MIN_VALUE) {
+ $ERROR('#13: Number.MIN_VALUE % -Infinity === Number.MIN_VALUE. Actual: ' + (Number.MIN_VALUE % -Infinity));
+}
+//CHECK#14
+if (Number.MIN_VALUE % Number.POSITIVE_INFINITY !== Number.MIN_VALUE) {
+ $ERROR('#14: Number.MIN_VALUE % Infinity === Number.MIN_VALUE. Actual: ' + (Number.MIN_VALUE % Infinity));
+}
+
+//CHECK#15
+if (-Number.MIN_VALUE % Number.POSITIVE_INFINITY !== -Number.MIN_VALUE) {
+ $ERROR('#15: -Number.MIN_VALUE % Infinity === -Number.MIN_VALUE. Actual: ' + (-Number.MIN_VALUE % Infinity));
+}
+
+//CHECK#16
+if (-Number.MIN_VALUE % Number.NEGATIVE_INFINITY !== -Number.MIN_VALUE) {
+ $ERROR('#16: -Number.MIN_VALUE % -Infinity === -Number.MIN_VALUE. Actual: ' + (-Number.MIN_VALUE % -Infinity));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T6.js
new file mode 100644
index 000000000..f6cd50a4d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T6.js
@@ -0,0 +1,81 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A4_T6;
+ * @section: 11.5.3;
+ * @assertion: The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics;
+ * @description: If dividend is a zero and the divisor is nonzero finite, the result equals the dividend;
+ */
+
+//CHECK#1
+if (0 % 1 !== 0) {
+ $ERROR('#1.1: 0 % 1 === 0. Actual: ' + (0 % 1));
+} else {
+ if (1 / (0 % 1) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: 0 % 1 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#2
+if (0 % -1 !== 0) {
+ $ERROR('#2.1: 0 % -1 === 0. Actual: ' + (0 % -1));
+} else {
+ if (1 / (0 % -1) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: 0 % -1 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#3
+if (-0 % 1 !== -0) {
+ $ERROR('#3.1: -0 % 1 === 0. Actual: ' + (-0 % 1));
+} else {
+ if (1 / (-0 % 1) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3.2: -0 % 1 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#4
+if (-0 % -1 !== -0) {
+ $ERROR('#4.1: -0 % -1 === 0. Actual: ' + (-0 % -1));
+} else {
+ if (1 / (-0 % -1) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4.2: 0 % -1 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#5
+if (0 % Number.MAX_VALUE !== 0) {
+ $ERROR('#5.1: 0 % Number.MAX_VALUE === 0. Actual: ' + (0 % Number.MAX_VALUE));
+} else {
+ if (1 / (0 % Number.MAX_VALUE) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#5.2: 0 % Number.MAX_VALUE === + 0. Actual: -0');
+ }
+}
+
+//CHECK#6
+if (0 % Number.MIN_VALUE !== 0) {
+ $ERROR('#6.1: 0 % Number.MIN_VALUE === 0. Actual: ' + (0 % Number.MIN_VALUE));
+} else {
+ if (1 / (0 % Number.MIN_VALUE) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#6.2: 0 % Number.MIN_VALUE === + 0. Actual: -0');
+ }
+}
+
+//CHECK#7
+if (-0 % Number.MAX_VALUE !== -0) {
+ $ERROR('#7.1: -0 % Number.MAX_VALUE === 0. Actual: ' + (-0 % Number.MAX_VALUE));
+} else {
+ if (1 / (-0 % Number.MAX_VALUE) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#7.2: -0 % Number.MAX_VALUE === - 0. Actual: +0');
+ }
+}
+
+//CHECK#8
+if (-0 % Number.MIN_VALUE !== -0) {
+ $ERROR('#8.1: -0 % Number.MIN_VALUE === 0. Actual: ' + (-0 % Number.MIN_VALUE));
+} else {
+ if (1 / (-0 % Number.MIN_VALUE) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#8.2: 0 % Number.MIN_VALUE === - 0. Actual: +0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T7.js
new file mode 100644
index 000000000..c754f3d88
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.5_Multiplicative_Operators/11.5.3_Applying_the_percent_Operator/S11.5.3_A4_T7.js
@@ -0,0 +1,73 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.5.3_A4_T7;
+ * @section: 11.5.3, 15.8.2.9;
+ * @assertion: The result of a ECMAScript floating-point remainder operation is determined by the rules of IEEE arithmetics;
+ * @description: If operands neither an infinity, nor a zero, nor NaN, return x - truncate(x / y) * y;
+ */
+
+function truncate(x) {
+ if (x > 0) {
+ return Math.floor(x);
+ } else {
+ return Math.ceil(x);
+ }
+}
+
+//CHECK#1
+x = 1.3;
+y = 1.1;
+if (x % y !== 0.19999999999999996) {
+ $ERROR('#1: x = 1.3; y = 1.1; x % y === 0.19999999999999996. Actual: ' + (x % y));
+}
+
+//CHECK#2
+x = -1.3;
+y = 1.1;
+if (x % y !== -0.19999999999999996) {
+ $ERROR('#2: x = -1.3; y = 1.1; x % y === -0.19999999999999996. Actual: ' + (x % y));
+}
+
+//CHECK#3
+x = 1.3;
+y = -1.1;
+if (x % y !== 0.19999999999999996) {
+ $ERROR('#3: x = 1.3; y = -1.1; x % y === 0.19999999999999996. Actual: ' + (x % y));
+}
+
+//CHECK#4
+x = -1.3;
+y = -1.1;
+if (x % y !== -0.19999999999999996) {
+ $ERROR('#4: x = -1.3; y = -1.1; x % y === -0.19999999999999996. Actual: ' + (x % y));
+}
+
+//CHECK#5
+x = 1.3;
+y = 1.1;
+if (x % y !== x - truncate(x / y) * y) {
+ $ERROR('#5: x = 1.3; y = 1.1; x % y === x - truncate(x / y) * y. Actual: ' + (x % y));
+}
+
+//CHECK#6
+x = -1.3;
+y = 1.1;
+if (x % y !== x - truncate(x / y) * y) {
+ $ERROR('#6: x = -1.3; y = 1.1; x % y === x - truncate(x / y) * y. Actual: ' + (x % y));
+}
+
+//CHECK#7
+x = 1.3;
+y = -1.1;
+if (x % y !== x - truncate(x / y) * y) {
+ $ERROR('#7: x = 1.3; y = -1.1; x % y === x - truncate(x / y) * y. Actual: ' + (x % y));
+}
+
+//CHECK#8
+x = -1.3;
+y = -1.1;
+if (x % y !== x - truncate(x / y) * y) {
+ $ERROR('#8: x = -1.3; y = -1.1; x % y === x - truncate(x / y) * y. Actual: ' + (x % y));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A1.js
new file mode 100644
index 000000000..0f0d752ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A1;
+* @section: 11.6.1, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between AdditiveExpression and "+" or between "+" and MultiplicativeExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("1\u0009+\u00091") !== 2) {
+ $ERROR('#1: 1\\u0009+\\u00091 === 2');
+}
+
+//CHECK#2
+if (eval("1\u000B+\u000B1") !== 2) {
+ $ERROR('#2: 1\\u000B+\\u000B1 === 2');
+}
+
+//CHECK#3
+if (eval("1\u000C+\u000C1") !== 2) {
+ $ERROR('#3: 1\\u000C+\\u000C1 === 2');
+}
+
+//CHECK#4
+if (eval("1\u0020+\u00201") !== 2) {
+ $ERROR('#4: 1\\u0020+\\u00201 === 2');
+}
+
+//CHECK#5
+if (eval("1\u00A0+\u00A01") !== 2) {
+ $ERROR('#5: 1\\u00A0+\\u00A01 === 2');
+}
+
+//CHECK#6
+if (eval("1\u000A+\u000A1") !== 2) {
+ $ERROR('#6: 1\\u000A+\\u000A1 === 2');
+}
+
+//CHECK#7
+if (eval("1\u000D+\u000D1") !== 2) {
+ $ERROR('#7: 1\\u000D+\\u000D1 === 2');
+}
+
+//CHECK#8
+if (eval("1\u2028+\u20281") !== 2) {
+ $ERROR('#8: 1\\u2028+\\u20281 === 2');
+}
+
+//CHECK#9
+if (eval("1\u2029+\u20291") !== 2) {
+ $ERROR('#9: 1\\u2029+\\u20291 === 2');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029+\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== 2) {
+ $ERROR('#10: 1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029+\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === 2');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T1.js
new file mode 100644
index 000000000..90fbe3360
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A2.1_T1;
+* @section: 11.6.1;
+* @assertion: Operator x + y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (1 + 1 !== 2) {
+ $ERROR('#1: 1 + 1 === 2. Actual: ' + (1 + 1));
+}
+
+//CHECK#2
+var x = 1;
+if (x + 1 !== 2) {
+ $ERROR('#2: var x = 1; x + 1 === 2. Actual: ' + (x + 1));
+}
+
+//CHECK#3
+var y = 1;
+if (1 + y !== 2) {
+ $ERROR('#3: var y = 1; 1 + y === 2. Actual: ' + (1 + y));
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if (x + y !== 2) {
+ $ERROR('#4: var x = 1; var y = 1; x + y === 2. Actual: ' + (x + y));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if (objectx.prop + objecty.prop !== 2) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; objectx.prop + objecty.prop === 2. Actual: ' + (objectx.prop + objecty.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T2.js
new file mode 100644
index 000000000..e75f2b349
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A2.1_T2;
+ * @section: 11.6.1;
+ * @assertion: Operator x + y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x + 1;
+ $ERROR('#1.1: x + 1 throw ReferenceError. Actual: ' + (x + 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x + 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T3.js
new file mode 100644
index 000000000..07420f526
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A2.1_T3;
+ * @section: 11.6.1;
+ * @assertion: Operator x + y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 + y;
+ $ERROR('#1.1: 1 + y throw ReferenceError. Actual: ' + (1 + y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 + y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T1.js
new file mode 100644
index 000000000..acab2aa43
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A2.2_T1;
+ * @section: 11.6.1, 8.6.2.6;
+ * @assertion: Operator x + y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return 1}} + 1 !== 2) {
+ $ERROR('#1: {valueOf: function() {return 1}} + 1 === 2. Actual: ' + ({valueOf: function() {return 1}} + 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 1}, toString: function() {return 0}} + 1 !== 2) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 0}} + 1 === 2. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 0}} + 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 1}, toString: function() {return {}}} + 1 !== 2) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} + 1 === 2. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} + 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 1}, toString: function() {throw "error"}} + 1 !== 2) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} + 1 === 2. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} + 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 1}, toString: function() {throw "error"}} + 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 1}, toString: function() {throw "error"}} + 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 + {toString: function() {return 1}} !== 2) {
+ $ERROR('#5: 1 + {toString: function() {return 1}} === 2. Actual: ' + (1 + {toString: function() {return 1}}));
+}
+
+//CHECK#6
+if (1 + {valueOf: function() {return {}}, toString: function() {return 1}} !== 2) {
+ $ERROR('#6: 1 + {valueOf: function() {return {}}, toString: function() {return 1}} === 2. Actual: ' + (1 + {valueOf: function() {return {}}, toString: function() {return 1}}));
+}
+
+//CHECK#7
+try {
+ 1 + {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: 1 + {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (1 + {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 + {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 + {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 + {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 + {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 + {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T2.js
new file mode 100644
index 000000000..9e85b5b9e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T2.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A2.2_T2;
+* @section: 11.6.1, 8.6.2.6;
+ * @assertion: Operator x + y uses [[Default Value]];
+ * @description: If Type(value) is Date object, evaluate ToPrimitive(value, String);
+ */
+
+//CHECK#1
+var date = new Date();
+if (date + date !== date.toString() + date.toString()) {
+ $ERROR('#1: var date = new Date(); date + date === date.toString() + date.toString(). Actual: ' + (date + date));
+}
+
+//CHECK#2
+var date = new Date();
+if (date + 0 !== date.toString() + "0") {
+ $ERROR('#2: var date = new Date(); date + 0 === date.toString() + "0". Actual: ' + (date + 0));
+}
+
+//CHECK#3
+var date = new Date();
+if (date + true !== date.toString() + "true") {
+ $ERROR('#3: var date = new Date(); date + true === date.toString() + "true". Actual: ' + (date + true));
+}
+
+//CHECK#4
+var date = new Date();
+if (date + new Object() !== date.toString() + "[object Object]") {
+ $ERROR('#4: var date = new Date(); date + new Object() === date.toString() + "[object Object]". Actual: ' + (date + new Object()));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T3.js
new file mode 100644
index 000000000..744770a78
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.2_T3.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A2.2_T3;
+ * @section: 11.6.1, 8.6.2.6;
+ * @assertion: Operator x + y uses [[Default Value]];
+ * @description: If Type(value) is Function, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+function f1(){
+ return 0;
+}
+if (f1 + 1 !== f1.toString() + 1) {
+ $ERROR('#1: function f1() {return 0;}; f1 + 1 === f1.toString() + 1');
+}
+
+//CHECK#2
+function f2(){
+ return 0;
+}
+f2.valueOf = function() {return 1;};
+if (1 + f2 !== 1 + 1) {
+ $ERROR('#2: f1unction f2() {return 0;} f2.valueOf = function() {return 1;}; 1 + f2 === 1 + 1. Actual: ' + (1 + f2));
+}
+
+//CHECK#3
+function f3(){
+ return 0;
+}
+f3.toString = function() {return 1;};
+if (1 + f3 !== 1 + 1) {
+ $ERROR('#3: f1unction f3() {return 0;} f3.toString() = function() {return 1;}; 1 + f3 === 1 + 1. Actual: ' + (1 + f3));
+}
+
+//CHECK#4
+function f4(){
+ return 0;
+}
+f4.valueOf = function() {return -1;};
+f4.toString = function() {return 1;};
+if (f4 + 1 !== 1 - 1) {
+ $ERROR('#4: f1unction f4() {return 0;}; f2.valueOf = function() {return -1;}; f4.toString() = function() {return 1;}; f4 + 1 === 1 - 1. Actual: ' + (f4 + 1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.3_T1.js
new file mode 100644
index 000000000..ad38b3def
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A2.3_T1;
+ * @section: 11.6.1;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x + y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x + y throw "x". Actual: ' + (x + y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToNumber(first expression) is called first, and then ToNumber(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x + y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T1.js
new file mode 100644
index 000000000..1e1a9c021
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A2.4_T1;
+ * @section: 11.6.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) + x !== 2) {
+ $ERROR('#1: var x = 0; (x = 1) + x === 2. Actual: ' + ((x = 1) + x));
+}
+
+//CHECK#2
+var x = 0;
+if (x + (x = 1) !== 1) {
+ $ERROR('#2: var x = 0; x + (x = 1) === 1. Actual: ' + (x + (x = 1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T2.js
new file mode 100644
index 000000000..de6cec880
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A2.4_T2;
+ * @section: 11.6.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() + y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() + y() throw "x". Actual: ' + (x() + y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() + y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T3.js
new file mode 100644
index 000000000..5c0b13d80
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A2.4_T3;
+ * @section: 11.6.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x + (x = 1);
+ $ERROR('#1.1: x + (x = 1) throw ReferenceError. Actual: ' + (x + (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x + (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) + y !== 2) {
+ $ERROR('#2: (y = 1) + y === 2. Actual: ' + ((y = 1) + y));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.1.js
new file mode 100644
index 000000000..36b90550f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.1_T1.1;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true + true !== 2) {
+ $ERROR('#1: true + true === 2. Actual: ' + (true + true));
+}
+
+//CHECK#2
+if (new Boolean(true) + true !== 2) {
+ $ERROR('#2: new Boolean(true) + true === 2. Actual: ' + (new Boolean(true) + true));
+}
+
+//CHECK#3
+if (true + new Boolean(true) !== 2) {
+ $ERROR('#3: true + new Boolean(true) === 2. Actual: ' + (true + new Boolean(true)));
+}
+
+//CHECK#4
+if (new Boolean(true) + new Boolean(true) !== 2) {
+ $ERROR('#4: new Boolean(true) + new Boolean(true) === 2. Actual: ' + (new Boolean(true) + new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.2.js
new file mode 100644
index 000000000..0fb156c6d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.1_T1.2;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 + 1 !== 2) {
+ $ERROR('#1: 1 + 1 === 2. Actual: ' + (1 + 1));
+}
+
+//CHECK#2
+if (new Number(1) + 1 !== 2) {
+ $ERROR('#2: new Number(1) + 1 === 2. Actual: ' + (new Number(1) + 1));
+}
+
+//CHECK#3
+if (1 + new Number(1) !== 2) {
+ $ERROR('#3: 1 + new Number(1) === 2. Actual: ' + (1 + new Number(1)));
+}
+
+//CHECK#4
+if (new Number(1) + new Number(1) !== 2) {
+ $ERROR('#4: new Number(1) + new Number(1) === 2. Actual: ' + (new Number(1) + new Number(1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.3.js
new file mode 100644
index 000000000..bd9329203
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T1.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.1_T1.3;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(null + undefined) !== true) {
+ $ERROR('#1: null + undefined === Not-a-Number. Actual: ' + (null + undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined + null) !== true) {
+ $ERROR('#2: undefined + null === Not-a-Number. Actual: ' + (undefined + null));
+}
+
+//CHECK#3
+if (isNaN(undefined + undefined) !== true) {
+ $ERROR('#3: undefined + undefined === Not-a-Number. Actual: ' + (undefined + undefined));
+}
+
+//CHECK#4
+if (null + null !== 0) {
+ $ERROR('#4: null + null === 0. Actual: ' + (null + null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.1.js
new file mode 100644
index 000000000..402508ab4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.1_T2.1;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) or Boolean (primitive and object);
+ */
+
+//CHECK#1
+if (true + 1 !== 2) {
+ $ERROR('#1: true + 1 === 2. Actual: ' + (true + 1));
+}
+
+//CHECK#2
+if (1 + true !== 2) {
+ $ERROR('#2: 1 + true === 2. Actual: ' + (1 + true));
+}
+
+//CHECK#3
+if (new Boolean(true) + 1 !== 2) {
+ $ERROR('#3: new Boolean(true) + 1 === 2. Actual: ' + (new Boolean(true) + 1));
+}
+
+//CHECK#4
+if (1 + new Boolean(true) !== 2) {
+ $ERROR('#4: 1 + new Boolean(true) === 2. Actual: ' + (1 + new Boolean(true)));
+}
+
+//CHECK#5
+if (true + new Number(1) !== 2) {
+ $ERROR('#5: true + new Number(1) === 2. Actual: ' + (true + new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) + true !== 2) {
+ $ERROR('#6: new Number(1) + true === 2. Actual: ' + (new Number(1) + true));
+}
+
+//CHECK#7
+if (new Boolean(true) + new Number(1) !== 2) {
+ $ERROR('#7: new Boolean(true) + new Number(1) === 2. Actual: ' + (new Boolean(true) + new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) + new Boolean(true) !== 2) {
+ $ERROR('#8: new Number(1) + new Boolean(true) === 2. Actual: ' + (new Number(1) + new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.2.js
new file mode 100644
index 000000000..437ca4806
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.1_T2.2;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 + null !== 1) {
+ $ERROR('#1: 1 + null === 1. Actual: ' + (1 + null));
+}
+
+//CHECK#2
+if (null + 1 !== 1) {
+ $ERROR('#2: null + 1 === 1. Actual: ' + (null + 1));
+}
+
+//CHECK#3
+if (new Number(1) + null !== 1) {
+ $ERROR('#3: new Number(1) + null === 1. Actual: ' + (new Number(1) + null));
+}
+
+//CHECK#4
+if (null + new Number(1) !== 1) {
+ $ERROR('#4: null + new Number(1) === 1. Actual: ' + (null + new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.3.js
new file mode 100644
index 000000000..7a237be23
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.1_T2.3;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(1 + undefined) !== true) {
+ $ERROR('#1: 1 + undefined === Not-a-Number. Actual: ' + (1 + undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined + 1) !== true) {
+ $ERROR('#2: undefined + 1 === Not-a-Number. Actual: ' + (undefined + 1));
+}
+
+//CHECK#3
+if (isNaN(new Number(1) + undefined) !== true) {
+ $ERROR('#3: new Number(1) + undefined === Not-a-Number. Actual: ' + (new Number(1) + undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined + new Number(1)) !== true) {
+ $ERROR('#4: undefined + new Number(1) === Not-a-Number. Actual: ' + (undefined + new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.4.js
new file mode 100644
index 000000000..7463f6892
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.1_T2.4;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(true + undefined) !== true) {
+ $ERROR('#1: true + undefined === Not-a-Number. Actual: ' + (true + undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined + true) !== true) {
+ $ERROR('#2: undefined + true === Not-a-Number. Actual: ' + (undefined + true));
+}
+
+//CHECK#3
+if (isNaN(new Boolean(true) + undefined) !== true) {
+ $ERROR('#3: new Boolean(true) + undefined === Not-a-Number. Actual: ' + (new Boolean(true) + undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined + new Boolean(true)) !== true) {
+ $ERROR('#4: undefined + new Boolean(true) === Not-a-Number. Actual: ' + (undefined + new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.5.js
new file mode 100644
index 000000000..2b2bb841b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.1_T2.5.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.1_T2.5;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is not String and Type(Primitive(y)) is not String, then operator x + y returns ToNumber(x) + ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true + null !== 1) {
+ $ERROR('#1: true + null === 1. Actual: ' + (true + null));
+}
+
+//CHECK#2
+if (null + true !== 1) {
+ $ERROR('#2: null + true === 1. Actual: ' + (null + true));
+}
+
+//CHECK#3
+if (new Boolean(true) + null !== 1) {
+ $ERROR('#3: new Boolean(true) + null === 1. Actual: ' + (new Boolean(true) + null));
+}
+
+//CHECK#4
+if (null + new Boolean(true) !== 1) {
+ $ERROR('#4: null + new Boolean(true) === 1. Actual: ' + (null + new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T1.1.js
new file mode 100644
index 000000000..a3fc5912c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T1.1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.2_T1.1;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is String or Type(Primitive(y)) is String, then operator x + y returns the result of concatenating ToString(x) followed by ToString(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" + "1" !== "11") {
+ $ERROR('#1: "1" + "1" === "11". Actual: ' + ("1" + "1"));
+}
+
+//CHECK#2
+if (new String("1") + "1" !== "11") {
+ $ERROR('#2: new String("1") + "1" === "11". Actual: ' + (new String("1") + "1"));
+}
+
+//CHECK#3
+if ("1" + new String("1") !== "11") {
+ $ERROR('#3: "1" + new String("1") === "11". Actual: ' + ("1" + new String("1")));
+}
+
+//CHECK#4
+if (new String("1") + new String("1") !== "11") {
+ $ERROR('#4: new String("1") + new String("1") === "11". Actual: ' + (new String("1") + new String("1")));
+}
+
+//CHECK#5
+if ("x" + "1" !=="x1") {
+ $ERROR('#5: "x" + "1" === "x1". Actual: ' + ("x" + "1"));
+}
+
+//CHECK#6
+if ("1" + "x" !== "1x") {
+ $ERROR('#6: "1" + "x" === "1x". Actual: ' + ("1" + "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T1.2.js
new file mode 100644
index 000000000..25e998102
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T1.2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.2_T1.2;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is String or Type(Primitive(y)) is String, then operator x + y returns the result of concatenating ToString(x) followed by ToString(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (({} + function(){return 1}) !== ({}.toString() + function(){return 1}.toString())) {
+ $ERROR('#1: ({} + function(){return 1}) === ({}.toString() + function(){return 1}.toString()). Actual: ' + (({} + function(){return 1})));
+}
+
+//CHECK#2
+if ((function(){return 1} + {}) !== (function(){return 1}.toString() + {}.toString())) {
+ $ERROR('#2: (function(){return 1} + {}) === (function(){return 1}.toString() + {}.toString()). Actual: ' + ((function(){return 1} + {})));
+}
+
+//CHECK#3
+if ((function(){return 1} + function(){return 1}) !== (function(){return 1}.toString() + function(){return 1}.toString())) {
+ $ERROR('#3: (function(){return 1} + function(){return 1}) === (function(){return 1}.toString() + function(){return 1}.toString()). Actual: ' + ((function(){return 1} + function(){return 1})));
+}
+
+//CHECK#4
+if (({} + {}) !== ({}.toString() + {}.toString())) {
+ $ERROR('#4: ({} + {}) === ({}.toString() + {}.toString()). Actual: ' + (({} + {})));
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.1.js
new file mode 100644
index 000000000..222795da5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.2_T2.1;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is String or Type(Primitive(y)) is String, then operator x + y returns the result of concatenating ToString(x) followed by ToString(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" + 1 !== "11") {
+ $ERROR('#1: "1" + 1 === "11". Actual: ' + ("1" + 1));
+}
+
+//CHECK#2
+if (1 + "1" !== "11") {
+ $ERROR('#2: 1 + "1" === "11". Actual: ' + (1 + "1"));
+}
+
+//CHECK#3
+if (new String("1") + 1 !== "11") {
+ $ERROR('#3: new String("1") + 1 === "11". Actual: ' + (new String("1") + 1));
+}
+
+//CHECK#4
+if (1 + new String("1") !== "11") {
+ $ERROR('#4: 1 + new String("1") === "11". Actual: ' + (1 + new String("1")));
+}
+
+//CHECK#5
+if ("1" + new Number(1) !== "11") {
+ $ERROR('#5: "1" + new Number(1) === "11". Actual: ' + ("1" + new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) + "1" !== "11") {
+ $ERROR('#6: new Number(1) + "1" === "11". Actual: ' + (new Number(1) + "1"));
+}
+
+//CHECK#7
+if (new String("1") + new Number(1) !== "11") {
+ $ERROR('#7: new String("1") + new Number(1) === "11". Actual: ' + (new String("1") + new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) + new String("1") !== "11") {
+ $ERROR('#8: new Number(1) + new String("1") === "11". Actual: ' + (new Number(1) + new String("1")));
+}
+
+//CHECK#9
+if ("x" + 1 !=="x1") {
+ $ERROR('#9: "x" + 1 === "x1". Actual: ' + ("x" + 1));
+}
+
+//CHECK#10
+if (1 + "x" !== "1x") {
+ $ERROR('#10: 1 + "x" === "1x". Actual: ' + (1 + "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.2.js
new file mode 100644
index 000000000..5eccb0147
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.2.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.2_T2.2;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is String or Type(Primitive(y)) is String, then operator x + y returns the result of concatenating ToString(x) followed by ToString(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true + "1" !== "true1") {
+ $ERROR('#1: true + "1" === "true1". Actual: ' + (true + "1"));
+}
+
+//CHECK#2
+if ("1" + true !== "1true") {
+ $ERROR('#2: "1" + true === "1true". Actual: ' + ("1" + true));
+}
+
+//CHECK#3
+if (new Boolean(true) + "1" !== "true1") {
+ $ERROR('#3: new Boolean(true) + "1" === "true1". Actual: ' + (new Boolean(true) + "1"));
+}
+
+//CHECK#4
+if ("1" + new Boolean(true) !== "1true") {
+ $ERROR('#4: "1" + new Boolean(true) === "1true". Actual: ' + ("1" + new Boolean(true)));
+}
+
+//CHECK#5
+if (true + new String("1") !== "true1") {
+ $ERROR('#5: true + new String("1") === "true1". Actual: ' + (true + new String("1")));
+}
+
+//CHECK#6
+if (new String("1") + true !== "1true") {
+ $ERROR('#6: new String("1") + true === "1true". Actual: ' + (new String("1") + true));
+}
+
+//CHECK#7
+if (new Boolean(true) + new String("1") !== "true1") {
+ $ERROR('#7: new Boolean(true) + new String("1") === "true1". Actual: ' + (new Boolean(true) + new String("1")));
+}
+
+//CHECK#8
+if (new String("1") + new Boolean(true) !== "1true") {
+ $ERROR('#8: new String("1") + new Boolean(true) === "1true". Actual: ' + (new String("1") + new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.3.js
new file mode 100644
index 000000000..ecfca9fec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.2_T2.3;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is String or Type(Primitive(y)) is String, then operator x + y returns the result of concatenating ToString(x) followed by ToString(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ("1" + undefined !== "1undefined") {
+ $ERROR('#1: "1" + undefined === "1undefined". Actual: ' + ("1" + undefined));
+}
+
+//CHECK#2
+if (undefined + "1" !== "undefined1") {
+ $ERROR('#2: undefined + "1" === "undefined1". Actual: ' + (undefined + "1"));
+}
+
+//CHECK#3
+if (new String("1") + undefined !== "1undefined") {
+ $ERROR('#3: new String("1") + undefined === "1undefined". Actual: ' + (new String("1") + undefined));
+}
+
+//CHECK#4
+if (undefined + new String("1") !== "undefined1") {
+ $ERROR('#4: undefined + new String("1") === "undefined1". Actual: ' + (undefined + new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.4.js
new file mode 100644
index 000000000..45bbeca3b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A3.2_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A3.2_T2.4;
+ * @section: 11.6.1;
+ * @assertion: If Type(Primitive(x)) is String or Type(Primitive(y)) is String, then operator x + y returns the result of concatenating ToString(x) followed by ToString(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" + null !== "1null") {
+ $ERROR('#1: "1" + null === "1null". Actual: ' + ("1" + null));
+}
+
+//CHECK#2
+if (null + "1" !== "null1") {
+ $ERROR('#2: null + "1" === "null1". Actual: ' + (null + "1"));
+}
+
+//CHECK#3
+if (new String("1") + null !== "1null") {
+ $ERROR('#3: new String("1") + null === "1null". Actual: ' + (new String("1") + null));
+}
+
+//CHECK#4
+if (null + new String("1") !== "null1") {
+ $ERROR('#4: null + new String("1") === "null1". Actual: ' + (null + new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T1.js
new file mode 100644
index 000000000..cd3fe70cd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T1.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A4_T1;
+* @section: 11.6.1, 11.6.3;
+* @assertion: The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics;
+* @description: If either operand is NaN, the result is NaN;
+*/
+
+//CHECK#1
+if (isNaN(Number.NaN + 1) !== true ) {
+ $ERROR('#1: NaN + 1 === Not-a-Number. Actual: ' + (NaN + 1));
+}
+
+//CHECK#2
+if (isNaN(1 + Number.NaN) !== true ) {
+ $ERROR('#2: 1 + NaN === Not-a-Number. Actual: ' + (1 + NaN));
+}
+
+//CHECK#3
+if (isNaN(Number.NaN + Number.POSITIVE_INFINITY) !== true ) {
+ $ERROR('#3: NaN + Infinity === Not-a-Number. Actual: ' + (NaN + Infinity));
+}
+
+//CHECK#4
+if (isNaN(Number.POSITIVE_INFINITY + Number.NaN) !== true ) {
+ $ERROR('#4: Infinity + NaN === Not-a-Number. Actual: ' + (Infinity + NaN));
+}
+
+//CHECK#5
+if (isNaN(Number.NaN + Number.NEGATIVE_INFINITY) !== true ) {
+ $ERROR('#5: NaN + Infinity === Not-a-Number. Actual: ' + (NaN + Infinity));
+}
+
+//CHECK#6
+if (isNaN(Number.NEGATIVE_INFINITY + Number.NaN) !== true ) {
+ $ERROR('#6: Infinity + NaN === Not-a-Number. Actual: ' + (Infinity + NaN));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T2.js
new file mode 100644
index 000000000..f00c331f5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A4_T2;
+* @section: 11.6.1, 11.6.3;
+* @assertion: The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics;
+* @description: The sum of two infinities of opposite sign is NaN;
+*/
+
+//CHECK#1
+if (isNaN(Number.POSITIVE_INFINITY + Number.NEGATIVE_INFINITY) !== true ) {
+ $ERROR('#1: Infinity + -Infinity === Not-a-Number. Actual: ' + (Infinity + -Infinity));
+}
+
+//CHECK#2
+if (isNaN(Number.NEGATIVE_INFINITY + Number.POSITIVE_INFINITY) !== true ) {
+ $ERROR('#2: -Infinity + Infinity === Not-a-Number. Actual: ' + (-Infinity + Infinity));
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T3.js
new file mode 100644
index 000000000..afa294b97
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T3.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A4_T3;
+* @section: 11.6.1, 11.6.3;
+* @assertion: The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics;
+* @description: The sum of two infinities of the same sign is the infinity of that sign;
+*/
+
+//CHECK#1
+if (Number.POSITIVE_INFINITY + Number.POSITIVE_INFINITY !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#1: Infinity + Infinity === Infinity. Actual: ' + (Infinity + Infinity));
+}
+
+//CHECK#2
+if (Number.NEGATIVE_INFINITY + Number.NEGATIVE_INFINITY !== Number.NEGATIVE_INFINITY ) {
+ $ERROR('#2: -Infinity + -Infinity === -Infinity. Actual: ' + (-Infinity + -Infinity));
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T4.js
new file mode 100644
index 000000000..5fa1f813a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T4.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A4_T4;
+* @section: 11.6.1, 11.6.3;
+* @assertion: The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics;
+* @description: The sum of an infinity and a finite value is equal to the infinite operand;
+*/
+
+//CHECK#1
+if (Number.POSITIVE_INFINITY + 1 !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#1: Infinity + 1 === Infinity. Actual: ' + (Infinity + 1));
+}
+
+//CHECK#2
+if (-1 + Number.POSITIVE_INFINITY !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#2: -1 + Infinity === Infinity. Actual: ' + (-1 + Infinity));
+}
+
+//CHECK#3
+if (Number.NEGATIVE_INFINITY + 1 !== Number.NEGATIVE_INFINITY ) {
+ $ERROR('#3: -Infinity + 1 === -Infinity. Actual: ' + (-Infinity + 1));
+}
+
+//CHECK#4
+if (-1 + Number.NEGATIVE_INFINITY !== Number.NEGATIVE_INFINITY ) {
+ $ERROR('#4: -1 + -Infinity === -Infinity. Actual: ' + (-1 + -Infinity));
+}
+
+//CHECK#5
+if (Number.POSITIVE_INFINITY + Number.MAX_VALUE !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#5: Infinity + Number.MAX_VALUE === Infinity. Actual: ' + (Infinity + Number.MAX_VALUE));
+}
+
+//CHECK#6
+if (-Number.MAX_VALUE + Number.POSITIVE_INFINITY !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#6: -Number.MAX_VALUE + Infinity === Infinity. Actual: ' + (-Number.MAX_VALUE + Infinity));
+}
+
+//CHECK#7
+if (Number.NEGATIVE_INFINITY + Number.MAX_VALUE !== Number.NEGATIVE_INFINITY ) {
+ $ERROR('#7: -Infinity + Number.MAX_VALUE === -Infinity. Actual: ' + (-Infinity + Number.MAX_VALUE));
+}
+
+//CHECK#8
+if (-Number.MAX_VALUE + Number.NEGATIVE_INFINITY !== Number.NEGATIVE_INFINITY ) {
+ $ERROR('#8: -Number.MAX_VALUE + -Infinity === -Infinity. Actual: ' + (-Number.MAX_VALUE + -Infinity));
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T5.js
new file mode 100644
index 000000000..56288f585
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T5.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A4_T5;
+* @section: 11.6.1, 11.6.3;
+* @assertion: The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics;
+* @description: The sum of two negative zeros is -0. The sum of two positive zeros, or of two zeros of opposite sign is +0;
+*/
+
+//CHECK#1
+if (-0 + -0 !== -0 ) {
+ $ERROR('#1.1: -0 + -0 === 0. Actual: ' + (-0 + -0));
+} else {
+ if (1 / (-0 + -0) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#1.1: -0 + -0 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#2
+if (0 + -0 !== 0 ) {
+ $ERROR('#2.1: 0 + -0 === 0. Actual: ' + (0 + -0));
+} else {
+ if (1 / (0 + -0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: 0 + -0 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#3
+if (-0 + 0 !== 0 ) {
+ $ERROR('#3.1: -0 + 0 === 0. Actual: ' + (-0 + 0));
+} else {
+ if (1 / (-0 + 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3.2: -0 + 0 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#4
+if (0 + 0 !== 0 ) {
+ $ERROR('#4.1: 0 + 0 === 0. Actual: ' + (0 + 0));
+} else {
+ if (1 / (0 + 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4.2: 0 + 0 === + 0. Actual: -0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T6.js
new file mode 100644
index 000000000..63c4b9aae
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T6.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A4_T6;
+* @section: 11.6.1, 11.6.3;
+* @assertion: The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics;
+* @description: The sum of a zero and a nonzero finite value is equal to the nonzero operand;
+*/
+
+//CHECK#1
+if (1 + -0 !== 1 ) {
+ $ERROR('#1: 1 + -0 === 1. Actual: ' + (1 + -0));
+}
+
+//CHECK#2
+if (1 + 0 !== 1 ) {
+ $ERROR('#2: 1 + 0 === 1. Actual: ' + (1 + 0));
+}
+
+//CHECK#3
+if (-0 + 1 !== 1 ) {
+ $ERROR('#3: -0 + 1 === 1. Actual: ' + (-0 + 1));
+}
+
+//CHECK#4
+if (0 + 1 !== 1 ) {
+ $ERROR('#4: 0 + 1 === 1. Actual: ' + (0 + 1));
+}
+
+//CHECK#5
+if (Number.MAX_VALUE + -0 !== Number.MAX_VALUE ) {
+ $ERROR('#5: Number.MAX_VALUE + -0 === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE + -0));
+}
+
+//CHECK#6
+if (Number.MAX_VALUE + 0 !== Number.MAX_VALUE ) {
+ $ERROR('#6: Number.MAX_VALUE + 0 === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE + 0));
+}
+
+//CHECK#7
+if (-0 + Number.MIN_VALUE !== Number.MIN_VALUE ) {
+ $ERROR('#7: -0 + Number.MIN_VALUE === Number.MIN_VALUE. Actual: ' + (-0 + Number.MIN_VALUE));
+}
+
+//CHECK#8
+if (0 + Number.MIN_VALUE !== Number.MIN_VALUE ) {
+ $ERROR('#8: 0 + Number.MIN_VALUE === Number.MIN_VALUE. Actual: ' + (0 + Number.MIN_VALUE));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T7.js
new file mode 100644
index 000000000..af20120e7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T7.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A4_T7;
+* @section: 11.6.1, 11.6.3;
+* @assertion: The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics;
+* @description: The sum of two nonzero finite values of the same magnitude and opposite sign is +0;
+*/
+
+//CHECK#1
+if (-Number.MIN_VALUE + Number.MIN_VALUE !== +0) {
+ $ERROR('#1.1: -Number.MIN_VALUE + Number.MIN_VALUE === 0. Actual: ' + (-Number.MIN_VALUE + Number.MIN_VALUE));
+} else {
+ if (1 / (-Number.MIN_VALUE + Number.MIN_VALUE) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: -Number.MIN_VALUE + Number.MIN_VALUE === + 0. Actual: -0');
+ }
+}
+
+//CHECK#2
+if (-Number.MAX_VALUE + Number.MAX_VALUE !== +0) {
+ $ERROR('#2.1: -Number.MAX_VALUE + Number.MAX_VALUE === 0. Actual: ' + (-Number.MAX_VALUE + Number.MAX_VALUE));
+} else {
+ if (1 / (-Number.MAX_VALUE + Number.MAX_VALUE) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: -Number.MAX_VALUE + Number.MAX_VALUE === + 0. Actual: -0');
+ }
+}
+
+//CHECK#3
+if (-1 / Number.MAX_VALUE + 1 / Number.MAX_VALUE !== +0) {
+ $ERROR('#3.1: -1 / Number.MAX_VALUE + 1 / Number.MAX_VALUE === 0. Actual: ' + (-1 / Number.MAX_VALUE + 1 / Number.MAX_VALUE));
+} else {
+ if (1 / (-1 / Number.MAX_VALUE + 1 / Number.MAX_VALUE) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3.2: -1 / Number.MAX_VALUE + 1 / Number.MAX_VALUE === + 0. Actual: -0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T8.js
new file mode 100644
index 000000000..a06760096
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.1_A4_T8;
+* @section: 11.6.1, 11.6.3;
+* @assertion: The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics;
+* @description: If the magnitude is too large to represent, the operation overflows and the result is then an infinity of appropriate sign;
+*/
+
+//CHECK#1
+if (Number.MAX_VALUE + Number.MAX_VALUE !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: Number.MAX_VALUE + Number.MAX_VALUE === Number.POSITIVE_INFINITY. Actual: ' + (Number.MAX_VALUE + Number.MAX_VALUE));
+}
+
+//CHECK#2
+if (-Number.MAX_VALUE - Number.MAX_VALUE !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#2: -Number.MAX_VALUE - Number.MAX_VALUE === Number.NEGATIVE_INFINITY. Actual: ' + (-Number.MAX_VALUE - Number.MAX_VALUE));
+}
+
+//CHECK#3
+if (1e+308 + 1e+308 !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: 1e+308 + 1e+308 === Number.POSITIVE_INFINITY. Actual: ' + (1e+308 + 1e+308));
+}
+
+//CHECK#4
+if (-8.99e+307 - 8.99e+307 !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4: -8.99e+307 - 8.99e+307 === Number.NEGATIVE_INFINITY. Actual: ' + (-8.99e+307 - 8.99e+307));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T9.js
new file mode 100644
index 000000000..8008a8792
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.1_The_Addition_operator/S11.6.1_A4_T9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.1_A4_T9;
+ * @section: 11.6.1, 11.6.3;
+ * @assertion: The result of an addition is determined using the rules of IEEE 754 double-precision arithmetics;
+ * @description: The addition operator is not always associative ( x + y + z is the same (x + y) + z, not x + (y + z));
+*/
+
+//CHECK#1
+if (-Number.MAX_VALUE + Number.MAX_VALUE + Number.MAX_VALUE !== (-Number.MAX_VALUE + Number.MAX_VALUE) + Number.MAX_VALUE) {
+ $ERROR('#1: -Number.MAX_VALUE + Number.MAX_VALUE + Number.MAX_VALUE === (-Number.MAX_VALUE + Number.MAX_VALUE) + Number.MAX_VALUE. Actual: ' + (-Number.MAX_VALUE + Number.MAX_VALUE + Number.MAX_VALUE));
+}
+
+//CHECK#2
+if ((-Number.MAX_VALUE + Number.MAX_VALUE) + Number.MAX_VALUE === -Number.MAX_VALUE + (Number.MAX_VALUE + Number.MAX_VALUE)) {
+ $ERROR('#2: (-Number.MAX_VALUE + Number.MAX_VALUE) + Number.MAX_VALUE === -Number.MAX_VALUE + (Number.MAX_VALUE + Number.MAX_VALUE). Actual: ' + ((-Number.MAX_VALUE + Number.MAX_VALUE) + Number.MAX_VALUE));
+}
+
+//CHECK#3
+if ("1" + 1 + 1 !== ("1" + 1) + 1) {
+ $ERROR('#3: "1" + 1 + 1 === ("1" + 1) + 1. Actual: ' + ("1" + 1 + 1));
+}
+
+//CHECK#4
+if (("1" + 1) + 1 === "1" + (1 + 1)) {
+ $ERROR('#4: ("1" + 1) + 1 !== "1" + (1 + 1)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A1.js
new file mode 100644
index 000000000..944a09d1a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A1;
+* @section: 11.6.2, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between AdditiveExpression and "-" or between "-" and MultiplicativeExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("1\u0009-\u00091") !== 0) {
+ $ERROR('#1: 1\\u0009-\\u00091 === 0');
+}
+
+//CHECK#2
+if (eval("1\u000B-\u000B1") !== 0) {
+ $ERROR('#2: 1\\u000B-\\u000B1 === 0');
+}
+
+//CHECK#3
+if (eval("1\u000C-\u000C1") !== 0) {
+ $ERROR('#3: 1\\u000C-\\u000C1 === 0');
+}
+
+//CHECK#4
+if (eval("1\u0020-\u00201") !== 0) {
+ $ERROR('#4: 1\\u0020-\\u00201 === 0');
+}
+
+//CHECK#5
+if (eval("1\u00A0-\u00A01") !== 0) {
+ $ERROR('#5: 1\\u00A0-\\u00A01 === 0');
+}
+
+//CHECK#6
+if (eval("1\u000A-\u000A1") !== 0) {
+ $ERROR('#6: 1\\u000A-\\u000A1 === 0');
+}
+
+//CHECK#7
+if (eval("1\u000D-\u000D1") !== 0) {
+ $ERROR('#7: 1\\u000D-\\u000D1 === 0');
+}
+
+//CHECK#8
+if (eval("1\u2028-\u20281") !== 0) {
+ $ERROR('#8: 1\\u2028-\\u20281 === 0');
+}
+
+//CHECK#9
+if (eval("1\u2029-\u20291") !== 0) {
+ $ERROR('#9: 1\\u2029-\\u20291 === 0');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029-\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== 0) {
+ $ERROR('#10: 1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029-\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === 0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T1.js
new file mode 100644
index 000000000..a8ea8e7b6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A2.1_T1;
+* @section: 11.6.2;
+* @assertion: Operator x - y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (1 - 1 !== 0) {
+ $ERROR('#1: 1 - 1 === 0. Actual: ' + (1 - 1));
+}
+
+//CHECK#2
+var x = 1;
+if (x - 1 !== 0) {
+ $ERROR('#2: var x = 1; x - 1 === 0. Actual: ' + (x - 1));
+}
+
+//CHECK#3
+var y = 1;
+if (1 - y !== 0) {
+ $ERROR('#3: var y = 1; 1 - y === 0. Actual: ' + (1 - y));
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if (x - y !== 0) {
+ $ERROR('#4: var x = 1; var y = 1; x - y === 0. Actual: ' + (x - y));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if (objectx.prop - objecty.prop !== 0) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; objectx.prop - objecty.prop === 0. Actual: ' + (objectx.prop - objecty.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T2.js
new file mode 100644
index 000000000..de0dad9e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A2.1_T2;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x - 1;
+ $ERROR('#1.1: x - 1 throw ReferenceError. Actual: ' + (x - 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x - 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T3.js
new file mode 100644
index 000000000..3e92c1cb4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A2.1_T3;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 - y;
+ $ERROR('#1.1: 1 - y throw ReferenceError. Actual: ' + (1 - y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 - y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.2_T1.js
new file mode 100644
index 000000000..4119ce6f3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A2.2_T1;
+ * @section: 11.6.2, 8.6.2.6;
+ * @assertion: Operator x - y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return 1}} - 1 !== 0) {
+ $ERROR('#1: {valueOf: function() {return 1}} - 1 === 0. Actual: ' + ({valueOf: function() {return 1}} - 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 1}, toString: function() {return 0}} - 1 !== 0) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 0}} - 1 === 0. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 0}} - 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 1}, toString: function() {return {}}} - 1 !== 0) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} - 1 === 0. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} - 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 1}, toString: function() {throw "error"}} - 1 !== 0) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} - 1 === 0. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} - 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 1}, toString: function() {throw "error"}} - 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 1}, toString: function() {throw "error"}} - 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 - {toString: function() {return 1}} !== 0) {
+ $ERROR('#5: 1 - {toString: function() {return 1}} === 0. Actual: ' + (1 - {toString: function() {return 1}}));
+}
+
+//CHECK#6
+if (1 - {valueOf: function() {return {}}, toString: function() {return 1}} !== 0) {
+ $ERROR('#6: 1 - {valueOf: function() {return {}}, toString: function() {return 1}} === 0. Actual: ' + (1 - {valueOf: function() {return {}}, toString: function() {return 1}}));
+}
+
+//CHECK#7
+try {
+ 1 - {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: 1 - {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (1 - {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 - {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 - {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 - {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 - {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 - {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.3_T1.js
new file mode 100644
index 000000000..f54f5dd55
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A2.3_T1;
+ * @section: 11.6.2;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x - y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x - y throw "x". Actual: ' + (x - y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToNumber(first expression) is called first, and then ToNumber(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x - y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T1.js
new file mode 100644
index 000000000..fc4671655
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A2.4_T1;
+ * @section: 11.6.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) - x !== 0) {
+ $ERROR('#1: var x = 0; (x = 1) - x === 0. Actual: ' + ((x = 1) - x));
+}
+
+//CHECK#2
+var x = 0;
+if (x - (x = 1) !== -1) {
+ $ERROR('#2: var x = 0; x - (x = 1) === -1. Actual: ' + (x - (x = 1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T2.js
new file mode 100644
index 000000000..985a2b555
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A2.4_T2;
+ * @section: 11.6.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() - y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() - y() throw "x". Actual: ' + (x() - y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() - y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T3.js
new file mode 100644
index 000000000..bf6f225c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A2.4_T3;
+ * @section: 11.6.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x - (x = 1);
+ $ERROR('#1.1: x - (x = 1) throw ReferenceError. Actual: ' + (x - (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x - (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) - y !== 0) {
+ $ERROR('#2: (y = 1) - y === 0. Actual: ' + ((y = 1) - y));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.1.js
new file mode 100644
index 000000000..b85066541
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T1.1;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true - true !== 0) {
+ $ERROR('#1: true - true === 0. Actual: ' + (true - true));
+}
+
+//CHECK#2
+if (new Boolean(true) - true !== 0) {
+ $ERROR('#2: new Boolean(true) - true === 0. Actual: ' + (new Boolean(true) - true));
+}
+
+//CHECK#3
+if (true - new Boolean(true) !== 0) {
+ $ERROR('#3: true - new Boolean(true) === 0. Actual: ' + (true - new Boolean(true)));
+}
+
+//CHECK#4
+if (new Boolean(true) - new Boolean(true) !== 0) {
+ $ERROR('#4: new Boolean(true) - new Boolean(true) === 0. Actual: ' + (new Boolean(true) - new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.2.js
new file mode 100644
index 000000000..7977c03db
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T1.2;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 - 1 !== 0) {
+ $ERROR('#1: 1 - 1 === 0. Actual: ' + (1 - 1));
+}
+
+//CHECK#2
+if (new Number(1) - 1 !== 0) {
+ $ERROR('#2: new Number(1) - 1 === 0. Actual: ' + (new Number(1) - 1));
+}
+
+//CHECK#3
+if (1 - new Number(1) !== 0) {
+ $ERROR('#3: 1 - new Number(1) === 0. Actual: ' + (1 - new Number(1)));
+}
+
+//CHECK#4
+if (new Number(1) - new Number(1) !== 0) {
+ $ERROR('#4: new Number(1) - new Number(1) === 0. Actual: ' + (new Number(1) - new Number(1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.3.js
new file mode 100644
index 000000000..0b62c8f7f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T1.3;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" - "1" !== 0) {
+ $ERROR('#1: "1" - "1" === 0. Actual: ' + ("1" - "1"));
+}
+
+//CHECK#2
+if (new String("1") - "1" !== 0) {
+ $ERROR('#2: new String("1") - "1" === 0. Actual: ' + (new String("1") - "1"));
+}
+
+//CHECK#3
+if ("1" - new String("1") !== 0) {
+ $ERROR('#3: "1" - new String("1") === 0. Actual: ' + ("1" - new String("1")));
+}
+
+//CHECK#4
+if (new String("1") - new String("1") !== 0) {
+ $ERROR('#4: new String("1") - new String("1") === 0. Actual: ' + (new String("1") - new String("1")));
+}
+
+//CHECK#5
+if (isNaN("x" - "1") !== true) {
+ $ERROR('#5: "x" - "1" === Not-a-Number. Actual: ' + ("x" - "1"));
+}
+
+//CHECK#6
+if (isNaN("1" - "x") !== true) {
+ $ERROR('#6: "1" - "x" === Not-a-Number. Actual: ' + ("1" - "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.4.js
new file mode 100644
index 000000000..7236464c2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T1.4;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(null - undefined) !== true) {
+ $ERROR('#1: null - undefined === Not-a-Number. Actual: ' + (null - undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined - null) !== true) {
+ $ERROR('#2: undefined - null === Not-a-Number. Actual: ' + (undefined - null));
+}
+
+//CHECK#3
+if (isNaN(undefined - undefined) !== true) {
+ $ERROR('#3: undefined - undefined === Not-a-Number. Actual: ' + (undefined - undefined));
+}
+
+//CHECK#4
+if (null - null !== 0) {
+ $ERROR('#4: null - null === 0. Actual: ' + (null - null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.5.js
new file mode 100644
index 000000000..e8d040b7b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T1.5.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T1.5;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (isNaN({} - function(){return 1}) !== true) {
+ $ERROR('#1: {} - function(){return 1} === Not-a-Number. Actual: ' + ({} - function(){return 1}));
+}
+
+//CHECK#2
+if (isNaN(function(){return 1} - {}) !== true) {
+ $ERROR('#2: function(){return 1} - {} === Not-a-Number. Actual: ' + (function(){return 1} - {}));
+}
+
+//CHECK#3
+if (isNaN(function(){return 1} - function(){return 1}) !== true) {
+ $ERROR('#3: function(){return 1} - function(){return 1} === Not-a-Number. Actual: ' + (function(){return 1} - function(){return 1}));
+}
+
+//CHECK#4
+if (isNaN({} - {}) !== true) {
+ $ERROR('#4: {} - {} === Not-a-Number. Actual: ' + ({} - {}));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.1.js
new file mode 100644
index 000000000..624e1a7ce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.1;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if (true - 1 !== 0) {
+ $ERROR('#1: true - 1 === 0. Actual: ' + (true - 1));
+}
+
+//CHECK#2
+if (1 - true !== 0) {
+ $ERROR('#2: 1 - true === 0. Actual: ' + (1 - true));
+}
+
+//CHECK#3
+if (new Boolean(true) - 1 !== 0) {
+ $ERROR('#3: new Boolean(true) - 1 === 0. Actual: ' + (new Boolean(true) - 1));
+}
+
+//CHECK#4
+if (1 - new Boolean(true) !== 0) {
+ $ERROR('#4: 1 - new Boolean(true) === 0. Actual: ' + (1 - new Boolean(true)));
+}
+
+//CHECK#5
+if (true - new Number(1) !== 0) {
+ $ERROR('#5: true - new Number(1) === 0. Actual: ' + (true - new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) - true !== 0) {
+ $ERROR('#6: new Number(1) - true === 0. Actual: ' + (new Number(1) - true));
+}
+
+//CHECK#7
+if (new Boolean(true) - new Number(1) !== 0) {
+ $ERROR('#7: new Boolean(true) - new Number(1) === 0. Actual: ' + (new Boolean(true) - new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) - new Boolean(true) !== 0) {
+ $ERROR('#8: new Number(1) - new Boolean(true) === 0. Actual: ' + (new Number(1) - new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.2.js
new file mode 100644
index 000000000..d5a026d37
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.2;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" - 1 !== 0) {
+ $ERROR('#1: "1" - 1 === 0. Actual: ' + ("1" - 1));
+}
+
+//CHECK#2
+if (1 - "1" !== 0) {
+ $ERROR('#2: 1 - "1" === 0. Actual: ' + (1 - "1"));
+}
+
+//CHECK#3
+if (new String("1") - 1 !== 0) {
+ $ERROR('#3: new String("1") - 1 === 0. Actual: ' + (new String("1") - 1));
+}
+
+//CHECK#4
+if (1 - new String("1") !== 0) {
+ $ERROR('#4: 1 - new String("1") === 0. Actual: ' + (1 - new String("1")));
+}
+
+//CHECK#5
+if ("1" - new Number(1) !== 0) {
+ $ERROR('#5: "1" - new Number(1) === 0. Actual: ' + ("1" - new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) - "1" !== 0) {
+ $ERROR('#6: new Number(1) - "1" === 0. Actual: ' + (new Number(1) - "1"));
+}
+
+//CHECK#7
+if (new String("1") - new Number(1) !== 0) {
+ $ERROR('#7: new String("1") - new Number(1) === 0. Actual: ' + (new String("1") - new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) - new String("1") !== 0) {
+ $ERROR('#8: new Number(1) - new String("1") === 0. Actual: ' + (new Number(1) - new String("1")));
+}
+
+//CHECK#9
+if (isNaN("x" - 1) !== true) {
+ $ERROR('#9: "x" - 1 === Not-a-Number. Actual: ' + ("x" - 1));
+}
+
+//CHECK#10
+if (isNaN(1 - "x") !== true) {
+ $ERROR('#10: 1 - "x" === Not-a-Number. Actual: ' + (1 - "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.3.js
new file mode 100644
index 000000000..a1685d0d8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.3;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 - null !== 1) {
+ $ERROR('#1: 1 - null === 1. Actual: ' + (1 - null));
+}
+
+//CHECK#2
+if (null - 1 !== -1) {
+ $ERROR('#2: null - 1 === -1. Actual: ' + (null - 1));
+}
+
+//CHECK#3
+if (new Number(1) - null !== 1) {
+ $ERROR('#3: new Number(1) - null === 1. Actual: ' + (new Number(1) - null));
+}
+
+//CHECK#4
+if (null - new Number(1) !== -1) {
+ $ERROR('#4: null - new Number(1) === -1. Actual: ' + (null - new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.4.js
new file mode 100644
index 000000000..52cde424a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.4;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(1 - undefined) !== true) {
+ $ERROR('#1: 1 - undefined === Not-a-Number. Actual: ' + (1 - undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined - 1) !== true) {
+ $ERROR('#2: undefined - 1 === Not-a-Number. Actual: ' + (undefined - 1));
+}
+
+//CHECK#3
+if (isNaN(new Number(1) - undefined) !== true) {
+ $ERROR('#3: new Number(1) - undefined === Not-a-Number. Actual: ' + (new Number(1) - undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined - new Number(1)) !== true) {
+ $ERROR('#4: undefined - new Number(1) === Not-a-Number. Actual: ' + (undefined - new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.5.js
new file mode 100644
index 000000000..15020de67
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.5;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true - "1" !== 0) {
+ $ERROR('#1: true - "1" === 0. Actual: ' + (true - "1"));
+}
+
+//CHECK#2
+if ("1" - true !== 0) {
+ $ERROR('#2: "1" - true === 0. Actual: ' + ("1" - true));
+}
+
+//CHECK#3
+if (new Boolean(true) - "1" !== 0) {
+ $ERROR('#3: new Boolean(true) - "1" === 0. Actual: ' + (new Boolean(true) - "1"));
+}
+
+//CHECK#4
+if ("1" - new Boolean(true) !== 0) {
+ $ERROR('#4: "1" - new Boolean(true) === 0. Actual: ' + ("1" - new Boolean(true)));
+}
+
+//CHECK#5
+if (true - new String("1") !== 0) {
+ $ERROR('#5: true - new String("1") === 0. Actual: ' + (true - new String("1")));
+}
+
+//CHECK#6
+if (new String("1") - true !== 0) {
+ $ERROR('#6: new String("1") - true === 0. Actual: ' + (new String("1") - true));
+}
+
+//CHECK#7
+if (new Boolean(true) - new String("1") !== 0) {
+ $ERROR('#7: new Boolean(true) - new String("1") === 0. Actual: ' + (new Boolean(true) - new String("1")));
+}
+
+//CHECK#8
+if (new String("1") - new Boolean(true) !== 0) {
+ $ERROR('#8: new String("1") - new Boolean(true) === 0. Actual: ' + (new String("1") - new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.6.js
new file mode 100644
index 000000000..95230265a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.6;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN("1" - undefined) !== true) {
+ $ERROR('#1: "1" - undefined === Not-a-Number. Actual: ' + ("1" - undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined - "1") !== true) {
+ $ERROR('#2: undefined - "1" === Not-a-Number. Actual: ' + (undefined - "1"));
+}
+
+//CHECK#3
+if (isNaN(new String("1") - undefined) !== true) {
+ $ERROR('#3: new String("1") - undefined === Not-a-Number. Actual: ' + (new String("1") - undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined - new String("1")) !== true) {
+ $ERROR('#4: undefined - new String("1") === Not-a-Number. Actual: ' + (undefined - new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.7.js
new file mode 100644
index 000000000..9810bdf00
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.7;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" - null !== 1) {
+ $ERROR('#1: "1" - null === 1. Actual: ' + ("1" - null));
+}
+
+//CHECK#2
+if (null - "1" !== -1) {
+ $ERROR('#2: null - "1" === -1. Actual: ' + (null - "1"));
+}
+
+//CHECK#3
+if (new String("1") - null !== 1) {
+ $ERROR('#3: new String("1") - null === 1. Actual: ' + (new String("1") - null));
+}
+
+//CHECK#4
+if (null - new String("1") !== -1) {
+ $ERROR('#4: null - new String("1") === -1. Actual: ' + (null - new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.8.js
new file mode 100644
index 000000000..a21ef92c9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.8;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (isNaN(true - undefined) !== true) {
+ $ERROR('#1: true - undefined === Not-a-Number. Actual: ' + (true - undefined));
+}
+
+//CHECK#2
+if (isNaN(undefined - true) !== true) {
+ $ERROR('#2: undefined - true === Not-a-Number. Actual: ' + (undefined - true));
+}
+
+//CHECK#3
+if (isNaN(new Boolean(true) - undefined) !== true) {
+ $ERROR('#3: new Boolean(true) - undefined === Not-a-Number. Actual: ' + (new Boolean(true) - undefined));
+}
+
+//CHECK#4
+if (isNaN(undefined - new Boolean(true)) !== true) {
+ $ERROR('#4: undefined - new Boolean(true) === Not-a-Number. Actual: ' + (undefined - new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.9.js
new file mode 100644
index 000000000..4a26e959c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.6.2_A3_T2.9;
+ * @section: 11.6.2;
+ * @assertion: Operator x - y returns ToNumber(x) - ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true - null !== 1) {
+ $ERROR('#1: true - null === 1. Actual: ' + (true - null));
+}
+
+//CHECK#2
+if (null - true !== -1) {
+ $ERROR('#2: null - true === -1. Actual: ' + (null - true));
+}
+
+//CHECK#3
+if (new Boolean(true) - null !== 1) {
+ $ERROR('#3: new Boolean(true) - null === 1. Actual: ' + (new Boolean(true) - null));
+}
+
+//CHECK#4
+if (null - new Boolean(true) !== -1) {
+ $ERROR('#4: null - new Boolean(true) === -1. Actual: ' + (null - new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T1.js
new file mode 100644
index 000000000..9f0118c11
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T1;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @description: If either operand is NaN, the result is NaN;
+*/
+
+//CHECK#1
+if (isNaN(Number.NaN - 1) !== true ) {
+ $ERROR('#1: NaN - 1 === Not-a-Number. Actual: ' + (NaN - 1));
+}
+
+//CHECK#2
+if (isNaN(1 - Number.NaN) !== true ) {
+ $ERROR('#2: 1 - NaN === Not-a-Number. Actual: ' + (1 - NaN));
+}
+
+//CHECK#3
+if (isNaN(Number.NaN - Number.POSITIVE_INFINITY) !== true ) {
+ $ERROR('#3: NaN - Infinity === Not-a-Number. Actual: ' + (NaN - Infinity));
+}
+
+//CHECK#4
+if (isNaN(Number.POSITIVE_INFINITY - Number.NaN) !== true ) {
+ $ERROR('#4: Infinity - NaN === Not-a-Number. Actual: ' + (Infinity - NaN));
+}
+
+//CHECK#5
+if (isNaN(Number.NaN - Number.NEGATIVE_INFINITY) !== true ) {
+ $ERROR('#5: NaN - Infinity === Not-a-Number. Actual: ' + (NaN - Infinity));
+}
+
+//CHECK#6
+if (isNaN(Number.NEGATIVE_INFINITY - Number.NaN) !== true ) {
+ $ERROR('#6: Infinity - NaN === Not-a-Number. Actual: ' + (Infinity - NaN));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T2.js
new file mode 100644
index 000000000..ca62b01e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T2.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T2;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @description: The difference of two infinities of opposite sign is the infinity of minuend sign;
+*/
+
+//CHECK#1
+if (Number.POSITIVE_INFINITY - Number.NEGATIVE_INFINITY !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#1: Infinity - -Infinity === Infinity. Actual: ' + (Infinity - -Infinity));
+}
+
+//CHECK#2
+if (Number.NEGATIVE_INFINITY - Number.POSITIVE_INFINITY !== Number.NEGATIVE_INFINITY ) {
+ $ERROR('#2: -Infinity - Infinity === -Infinity. Actual: ' + (-Infinity - Infinity));
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T3.js
new file mode 100644
index 000000000..968c3f290
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T3.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T3;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @description: The difference of two infinities of the same sign is NaN;
+*/
+
+//CHECK#1
+if (isNaN(Number.POSITIVE_INFINITY - Number.POSITIVE_INFINITY) !== true ) {
+ $ERROR('#1: Infinity - Infinity === Not-a-Number. Actual: ' + (Infinity - Infinity));
+}
+
+//CHECK#2
+if (isNaN(Number.NEGATIVE_INFINITY - Number.NEGATIVE_INFINITY) !== true ) {
+ $ERROR('#2: -Infinity - -Infinity === Not-a-Number. Actual: ' + (-Infinity - -Infinity));
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T4.js
new file mode 100644
index 000000000..16fe4b375
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T4.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T4;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @description: The difference of an infinity and a finite value is equal to infinity of appropriate sign;
+*/
+
+//CHECK#1
+if (Number.POSITIVE_INFINITY - 1 !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#1: Infinity - 1 === Infinity. Actual: ' + (Infinity - 1));
+}
+
+//CHECK#2
+if (-1 - Number.POSITIVE_INFINITY !== Number.NEGATIVE_INFINITY ) {
+ $ERROR('#2: -1 - Infinity === -Infinity. Actual: ' + (-1 - Infinity));
+}
+
+//CHECK#3
+if (Number.NEGATIVE_INFINITY - 1 !== Number.NEGATIVE_INFINITY ) {
+ $ERROR('#3: -Infinity - 1 === -Infinity. Actual: ' + (-Infinity - 1));
+}
+
+//CHECK#4
+if (-1 - Number.NEGATIVE_INFINITY !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#4: -1 - -Infinity === Infinity. Actual: ' + (-1 - -Infinity));
+}
+
+//CHECK#5
+if (Number.POSITIVE_INFINITY - Number.MAX_VALUE !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#5: Infinity - Number.MAX_VALUE === Infinity. Actual: ' + (Infinity - Number.MAX_VALUE));
+}
+
+//CHECK#6
+if (-Number.MAX_VALUE - Number.POSITIVE_INFINITY !== Number.NEGATIVE_INFINITY ) {
+ $ERROR('#6: -Number.MAX_VALUE - Infinity === I-nfinity. Actual: ' + (-Number.MAX_VALUE - Infinity));
+}
+
+//CHECK#7
+if (Number.NEGATIVE_INFINITY - Number.MAX_VALUE !== Number.NEGATIVE_INFINITY ) {
+ $ERROR('#7: -Infinity - Number.MAX_VALUE === -Infinity. Actual: ' + (-Infinity - Number.MAX_VALUE));
+}
+
+//CHECK#8
+if (-Number.MAX_VALUE - Number.NEGATIVE_INFINITY !== Number.POSITIVE_INFINITY ) {
+ $ERROR('#8: -Number.MAX_VALUE - -Infinity === Infinity. Actual: ' + (-Number.MAX_VALUE - -Infinity));
+}
+
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T5.js
new file mode 100644
index 000000000..322cec98e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T5.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T5;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @description: Using the rule of sum of two zeroes and the fact that a - b = a + (-b);
+*/
+
+//CHECK#1
+if (-0 - -0 !== 0 ) {
+ $ERROR('#1.1: -0 - -0 === 0. Actual: ' + (-0 - -0));
+} else {
+ if (1 / (-0 - -0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: -0 - -0 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#2
+if (0 - -0 !== 0 ) {
+ $ERROR('#2.1: 0 - -0 === 0. Actual: ' + (0 - -0));
+} else {
+ if (1 / (0 - -0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.2: 0 - -0 === + 0. Actual: -0');
+ }
+}
+
+//CHECK#3
+if (-0 - 0 !== -0 ) {
+ $ERROR('#3.1: -0 - 0 === 0. Actual: ' + (-0 - 0));
+} else {
+ if (1 / (-0 - 0) !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#3.2: -0 - 0 === - 0. Actual: +0');
+ }
+}
+
+//CHECK#4
+if (0 - 0 !== 0 ) {
+ $ERROR('#4.1: 0 - 0 === 0. Actual: ' + (0 - 0));
+} else {
+ if (1 / (0 - 0) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#4.2: 0 - 0 === + 0. Actual: -0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T6.js
new file mode 100644
index 000000000..63a31c2b1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T6.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T6;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @description: Using the rule of sum of a zero and a nonzero finite value and the fact that a - b = a + (-b);
+*/
+
+//CHECK#1
+if (1 - -0 !== 1 ) {
+ $ERROR('#1: 1 - -0 === 1. Actual: ' + (1 - -0));
+}
+
+//CHECK#2
+if (1 - 0 !== 1 ) {
+ $ERROR('#2: 1 - 0 === 1. Actual: ' + (1 - 0));
+}
+
+//CHECK#3
+if (-0 - 1 !== -1 ) {
+ $ERROR('#3: -0 - 1 === -1. Actual: ' + (-0 - 1));
+}
+
+//CHECK#4
+if (0 - 1 !== -1 ) {
+ $ERROR('#4: 0 - 1 === -1. Actual: ' + (0 - 1));
+}
+
+//CHECK#5
+if (Number.MAX_VALUE - -0 !== Number.MAX_VALUE ) {
+ $ERROR('#5: Number.MAX_VALUE - -0 === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE - -0));
+}
+
+//CHECK#6
+if (Number.MAX_VALUE - 0 !== Number.MAX_VALUE ) {
+ $ERROR('#6: Number.MAX_VALUE - 0 === Number.MAX_VALUE. Actual: ' + (Number.MAX_VALUE - 0));
+}
+
+//CHECK#7
+if (-0 - Number.MIN_VALUE !== -Number.MIN_VALUE ) {
+ $ERROR('#7: -0 - Number.MIN_VALUE === -Number.MIN_VALUE. Actual: ' + (-0 - Number.MIN_VALUE));
+}
+
+//CHECK#8
+if (0 - Number.MIN_VALUE !== -Number.MIN_VALUE ) {
+ $ERROR('#8: 0 - Number.MIN_VALUE === -Number.MIN_VALUE. Actual: ' + (0 - Number.MIN_VALUE));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T7.js
new file mode 100644
index 000000000..274474cc7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T7.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T7;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @description: The mathematical difference of two nonzero finite values of the same magnitude and same sign is +0;
+*/
+
+//CHECK#1
+if (Number.MIN_VALUE - Number.MIN_VALUE !== +0) {
+ $ERROR('#1.1: Number.MIN_VALUE - Number.MIN_VALUE === 0. Actual: ' + (Number.MIN_VALUE - Number.MIN_VALUE));
+} else {
+ if (1 / (Number.MIN_VALUE - Number.MIN_VALUE) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1.2: Number.MIN_VALUE - Number.MIN_VALUE === + 0. Actual: -0');
+ }
+}
+
+//CHECK#2
+if (-Number.MAX_VALUE - -Number.MAX_VALUE !== +0) {
+ $ERROR('#2.2: -Number.MAX_VALUE - -Number.MAX_VALUE === 0. Actual: ' + (-Number.MAX_VALUE - -Number.MAX_VALUE));
+} else {
+ if (1 / (-Number.MAX_VALUE - -Number.MAX_VALUE) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#2.1: -Number.MAX_VALUE - -Number.MAX_VALUE === + 0. Actual: -0');
+ }
+}
+
+//CHECK#3
+if (1 / Number.MAX_VALUE - 1 / Number.MAX_VALUE !== +0) {
+ $ERROR('#3.1: 1 / Number.MAX_VALUE - 1 / Number.MAX_VALUE === 0. Actual: ' + (1 / Number.MAX_VALUE - 1 / Number.MAX_VALUE));
+} else {
+ if (1 / (1 / Number.MAX_VALUE - 1 / Number.MAX_VALUE) !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3.2: 1 / Number.MAX_VALUE - 1 / Number.MAX_VALUE === + 0. Actual: -0');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T8.js
new file mode 100644
index 000000000..e25ae9409
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.6_Additive_Operators/11.6.2_The_Subtraction_operator/S11.6.2_A4_T8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.6.2_A4_T8;
+* @section: 11.6.2, 11.6.3;
+* @assertion: Operator x - y produces the same result as x + (-y);
+* @description: If the magnitude is too large to represent, the operation overflows and the result is then an infinity of appropriate sign;
+*/
+
+//CHECK#1
+if (Number.MAX_VALUE - -Number.MAX_VALUE !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: Number.MAX_VALUE - -Number.MAX_VALUE === Number.POSITIVE_INFINITY. Actual: ' + (Number.MAX_VALUE - -Number.MAX_VALUE));
+}
+
+//CHECK#2
+if (-Number.MAX_VALUE - Number.MAX_VALUE !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#2: -Number.MAX_VALUE - umber.MAX_VALUE === Number.NEGATIVE_INFINITY. Actual: ' + (-Number.MAX_VALUE - umber.MAX_VALUE));
+}
+
+//CHECK#3
+if (1e+308 - -1e+308 !== Number.POSITIVE_INFINITY) {
+ $ERROR('#3: 1e+308 - -1e+308 === Number.POSITIVE_INFINITY. Actual: ' + (1e+308 - -1e+308));
+}
+
+//CHECK#4
+if (-8.99e+307 - 8.99e+307 !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#4: -8.99e+307 - 8.99e+307 === Number.NEGATIVE_INFINITY. Actual: ' + (-8.99e+307 - 8.99e+307));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A1.js
new file mode 100644
index 000000000..554e2e5e8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.7.1_A1;
+* @section: 11.7.1, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between ShiftExpression and "<<" or between "<<" and AdditiveExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("1\u0009<<\u00091") !== 2) {
+ $ERROR('#1: 1\\u0009<<\\u00091 === 2');
+}
+
+//CHECK#2
+if (eval("1\u000B<<\u000B1") !== 2) {
+ $ERROR('#2: 1\\u000B<<\\u000B1 === 2');
+}
+
+//CHECK#3
+if (eval("1\u000C<<\u000C1") !== 2) {
+ $ERROR('#3: 1\\u000C<<\\u000C1 === 2');
+}
+
+//CHECK#4
+if (eval("1\u0020<<\u00201") !== 2) {
+ $ERROR('#4: 1\\u0020<<\\u00201 === 2');
+}
+
+//CHECK#5
+if (eval("1\u00A0<<\u00A01") !== 2) {
+ $ERROR('#5: 1\\u00A0<<\\u00A01 === 2');
+}
+
+//CHECK#6
+if (eval("1\u000A<<\u000A1") !== 2) {
+ $ERROR('#6: 1\\u000A<<\\u000A1 === 2');
+}
+
+//CHECK#7
+if (eval("1\u000D<<\u000D1") !== 2) {
+ $ERROR('#7: 1\\u000D<<\\u000D1 === 2');
+}
+
+//CHECK#8
+if (eval("1\u2028<<\u20281") !== 2) {
+ $ERROR('#8: 1\\u2028<<\\u20281 === 2');
+}
+
+//CHECK#9
+if (eval("1\u2029<<\u20291") !== 2) {
+ $ERROR('#9: 1\\u2029<<\\u20291 === 2');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029<<\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== 2) {
+ $ERROR('#10: 1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029<<\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === 2');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T1.js
new file mode 100644
index 000000000..577a25ec3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.7.1_A2.1_T1;
+* @section: 11.7.1;
+* @assertion: Operator x << y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (2 << 1 !== 4) {
+ $ERROR('#1: 2 << 1 === 4. Actual: ' + (2 << 1));
+}
+
+//CHECK#2
+var x = 2;
+if (x << 1 !== 4) {
+ $ERROR('#2: var x = 2; x << 1 === 4. Actual: ' + (x << 1));
+}
+
+//CHECK#3
+var y = 1;
+if (2 << y !== 4) {
+ $ERROR('#3: var y = 2; 2 << y === 4. Actual: ' + (2 << y));
+}
+
+//CHECK#4
+var x = 2;
+var y = 1;
+if (x << y !== 4) {
+ $ERROR('#4: var x = 2; var y = 1; x << y === 4. Actual: ' + (x << y));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 2;
+objecty.prop = 1;
+if (objectx.prop << objecty.prop !== 4) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 2; objecty.prop = 1; objectx.prop << objecty.prop === 4. Actual: ' + (objectx.prop << objecty.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T2.js
new file mode 100644
index 000000000..01f44084c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A2.1_T2;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x << 1;
+ $ERROR('#1.1: x << 1 throw ReferenceError. Actual: ' + (x << 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x << 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T3.js
new file mode 100644
index 000000000..2171f918a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A2.1_T3;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 << y;
+ $ERROR('#1.1: 1 << y throw ReferenceError. Actual: ' + (1 << y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 << y throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.2_T1.js
new file mode 100644
index 000000000..bbfd50414
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A2.2_T1;
+ * @section: 11.7.1, 8.6.2.6;
+ * @assertion: Operator x << y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return 1}} << 1 !== 2) {
+ $ERROR('#1: {valueOf: function() {return 1}} << 1 === 2. Actual: ' + ({valueOf: function() {return 1}} << 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 1}, toString: function() {return 0}} << 1 !== 2) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 0}} << 1 === 2. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 0}} << 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 1}, toString: function() {return {}}} << 1 !== 2) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} << 1 === 2. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} << 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 1}, toString: function() {throw "error"}} << 1 !== 2) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} << 1 === 2. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} << 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 1}, toString: function() {throw "error"}} << 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 1}, toString: function() {throw "error"}} << 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 << {toString: function() {return 1}} !== 2) {
+ $ERROR('#5: 1 << {toString: function() {return 1}} === 2. Actual: ' + (1 << {toString: function() {return 1}}));
+}
+
+//CHECK#6
+if (1 << {valueOf: function() {return {}}, toString: function() {return 1}} !== 2) {
+ $ERROR('#6: 1 << {valueOf: function() {return {}}, toString: function() {return 1}} === 2. Actual: ' + (1 << {valueOf: function() {return {}}, toString: function() {return 1}}));
+}
+
+//CHECK#7
+try {
+ 1 << {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: 1 << {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (1 << {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 << {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 << {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 << {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 << {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 << {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.3_T1.js
new file mode 100644
index 000000000..5f321028b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A2.3_T1;
+ * @section: 11.7.1;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x << y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x << y throw "x". Actual: ' + (x << y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToNumber(first expression) is called first, and then ToNumber(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x << y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T1.js
new file mode 100644
index 000000000..4f1396fdd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A2.4_T1;
+ * @section: 11.7.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) << x !== 2) {
+ $ERROR('#1: var x = 0; (x = 1) << x === 2. Actual: ' + ((x = 1) << x));
+}
+
+//CHECK#2
+var x = 0;
+if (x << (x = 1) !== 0) {
+ $ERROR('#2: var x = 0; x << (x = 1) === 0. Actual: ' + (x << (x = 1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T2.js
new file mode 100644
index 000000000..f69382802
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A2.4_T2;
+ * @section: 11.7.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() << y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() << y() throw "x". Actual: ' + (x() << y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() << y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T3.js
new file mode 100644
index 000000000..daf77026c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A2.4_T3;
+ * @section: 11.7.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x << (x = 1);
+ $ERROR('#1.1: x << (x = 1) throw ReferenceError. Actual: ' + (x << (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x << (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) << y !== 2) {
+ $ERROR('#2: (y = 1) << y === 2. Actual: ' + ((y = 1) << y));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.1.js
new file mode 100644
index 000000000..1e6aef1c0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T1.1;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+*/
+
+//CHECK#1
+if (true << true !== 2) {
+ $ERROR('#1: true << true === 2. Actual: ' + (true << true));
+}
+
+//CHECK#2
+if (new Boolean(true) << true !== 2) {
+ $ERROR('#2: new Boolean(true) << true === 2. Actual: ' + (new Boolean(true) << true));
+}
+
+//CHECK#3
+if (true << new Boolean(true) !== 2) {
+ $ERROR('#3: true << new Boolean(true) === 2. Actual: ' + (true << new Boolean(true)));
+}
+
+//CHECK#4
+if (new Boolean(true) << new Boolean(true) !== 2) {
+ $ERROR('#4: new Boolean(true) << new Boolean(true) === 2. Actual: ' + (new Boolean(true) << new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.2.js
new file mode 100644
index 000000000..a6c61c1fa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T1.2;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 << 1 !== 2) {
+ $ERROR('#1: 1 << 1 === 2. Actual: ' + (1 << 1));
+}
+
+//CHECK#2
+if (new Number(1) << 1 !== 2) {
+ $ERROR('#2: new Number(1) << 1 === 2. Actual: ' + (new Number(1) << 1));
+}
+
+//CHECK#3
+if (1 << new Number(1) !== 2) {
+ $ERROR('#3: 1 << new Number(1) === 2. Actual: ' + (1 << new Number(1)));
+}
+
+//CHECK#4
+if (new Number(1) << new Number(1) !== 2) {
+ $ERROR('#4: new Number(1) << new Number(1) === 2. Actual: ' + (new Number(1) << new Number(1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.3.js
new file mode 100644
index 000000000..82e40f90b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T1.3;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" << "1" !== 2) {
+ $ERROR('#1: "1" << "1" === 2. Actual: ' + ("1" << "1"));
+}
+
+//CHECK#2
+if (new String("1") << "1" !== 2) {
+ $ERROR('#2: new String("1") << "1" === 2. Actual: ' + (new String("1") << "1"));
+}
+
+//CHECK#3
+if ("1" << new String("1") !== 2) {
+ $ERROR('#3: "1" << new String("1") === 2. Actual: ' + ("1" << new String("1")));
+}
+
+//CHECK#4
+if (new String("1") << new String("1") !== 2) {
+ $ERROR('#4: new String("1") << new String("1") === 2. Actual: ' + (new String("1") << new String("1")));
+}
+
+//CHECK#5
+if ("x" << "1" !== 0) {
+ $ERROR('#5: "x" << "1" === 0. Actual: ' + ("x" << "1"));
+}
+
+//CHECK#6
+if ("1" << "x" !== 1) {
+ $ERROR('#6: "1" << "x" === 1. Actual: ' + ("1" << "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.4.js
new file mode 100644
index 000000000..0c3ca8ad2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T1.4;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (null << undefined !== 0) {
+ $ERROR('#1: null << undefined === 0. Actual: ' + (null << undefined));
+}
+
+//CHECK#2
+if (undefined << null !== 0) {
+ $ERROR('#2: undefined << null === 0. Actual: ' + (undefined << null));
+}
+
+//CHECK#3
+if (undefined << undefined !== 0) {
+ $ERROR('#3: undefined << undefined === 0. Actual: ' + (undefined << undefined));
+}
+
+//CHECK#4
+if (null << null !== 0) {
+ $ERROR('#4: null << null === 0. Actual: ' + (null << null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.5.js
new file mode 100644
index 000000000..7a6f1590f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T1.5.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T1.5;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (({} << function(){return 1}) !== 0) {
+ $ERROR('#1: ({} << function(){return 1}) === 0. Actual: ' + (({} << function(){return 1})));
+}
+
+//CHECK#2
+if ((function(){return 1} << {}) !== 0) {
+ $ERROR('#2: (function(){return 1} << {}) === 0. Actual: ' + ((function(){return 1} << {})));
+}
+
+//CHECK#3
+if ((function(){return 1} << function(){return 1}) !== 0) {
+ $ERROR('#3: (function(){return 1} << function(){return 1}) === 0. Actual: ' + ((function(){return 1} << function(){return 1})));
+}
+
+//CHECK#4
+if (({} << {}) !== 0) {
+ $ERROR('#4: ({} << {}) === 0. Actual: ' + (({} << {})));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.1.js
new file mode 100644
index 000000000..69549badc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T2.1;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if (true << 1 !== 2) {
+ $ERROR('#1: true << 1 === 2. Actual: ' + (true << 1));
+}
+
+//CHECK#2
+if (1 << true !== 2) {
+ $ERROR('#2: 1 << true === 2. Actual: ' + (1 << true));
+}
+
+//CHECK#3
+if (new Boolean(true) << 1 !== 2) {
+ $ERROR('#3: new Boolean(true) << 1 === 2. Actual: ' + (new Boolean(true) << 1));
+}
+
+//CHECK#4
+if (1 << new Boolean(true) !== 2) {
+ $ERROR('#4: 1 << new Boolean(true) === 2. Actual: ' + (1 << new Boolean(true)));
+}
+
+//CHECK#5
+if (true << new Number(1) !== 2) {
+ $ERROR('#5: true << new Number(1) === 2. Actual: ' + (true << new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) << true !== 2) {
+ $ERROR('#6: new Number(1) << true === 2. Actual: ' + (new Number(1) << true));
+}
+
+//CHECK#7
+if (new Boolean(true) << new Number(1) !== 2) {
+ $ERROR('#7: new Boolean(true) << new Number(1) === 2. Actual: ' + (new Boolean(true) << new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) << new Boolean(true) !== 2) {
+ $ERROR('#8: new Number(1) << new Boolean(true) === 2. Actual: ' + (new Number(1) << new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.2.js
new file mode 100644
index 000000000..222347321
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T2.2;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" << 1 !== 2) {
+ $ERROR('#1: "1" << 1 === 2. Actual: ' + ("1" << 1));
+}
+
+//CHECK#2
+if (1 << "1" !== 2) {
+ $ERROR('#2: 1 << "1" === 2. Actual: ' + (1 << "1"));
+}
+
+//CHECK#3
+if (new String("1") << 1 !== 2) {
+ $ERROR('#3: new String("1") << 1 === 2. Actual: ' + (new String("1") << 1));
+}
+
+//CHECK#4
+if (1 << new String("1") !== 2) {
+ $ERROR('#4: 1 << new String("1") === 2. Actual: ' + (1 << new String("1")));
+}
+
+//CHECK#5
+if ("1" << new Number(1) !== 2) {
+ $ERROR('#5: "1" << new Number(1) === 2. Actual: ' + ("1" << new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) << "1" !== 2) {
+ $ERROR('#6: new Number(1) << "1" === 2. Actual: ' + (new Number(1) << "1"));
+}
+
+//CHECK#7
+if (new String("1") << new Number(1) !== 2) {
+ $ERROR('#7: new String("1") << new Number(1) === 2. Actual: ' + (new String("1") << new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) << new String("1") !== 2) {
+ $ERROR('#8: new Number(1) << new String("1") === 2. Actual: ' + (new Number(1) << new String("1")));
+}
+
+//CHECK#9
+if ("x" << 1 !== 0) {
+ $ERROR('#9: "x" << 1 === 0. Actual: ' + ("x" << 1));
+}
+
+//CHECK#10
+if (1 << "x" !== 1) {
+ $ERROR('#10: 1 << "x" === 1. Actual: ' + (1 << "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.3.js
new file mode 100644
index 000000000..3737cba0e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T2.3;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 << null !== 1) {
+ $ERROR('#1: 1 << null === 1. Actual: ' + (1 << null));
+}
+
+//CHECK#2
+if (null << 1 !== 0) {
+ $ERROR('#2: null << 1 === 0. Actual: ' + (null << 1));
+}
+
+//CHECK#3
+if (new Number(1) << null !== 1) {
+ $ERROR('#3: new Number(1) << null === 1. Actual: ' + (new Number(1) << null));
+}
+
+//CHECK#4
+if (null << new Number(1) !== 0) {
+ $ERROR('#4: null << new Number(1) === 0. Actual: ' + (null << new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.4.js
new file mode 100644
index 000000000..f3f965d7d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T2.4;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (1 << undefined !== 1) {
+ $ERROR('#1: 1 << undefined === 1. Actual: ' + (1 << undefined));
+}
+
+//CHECK#2
+if (undefined << 1 !== 0) {
+ $ERROR('#2: undefined << 1 === 0. Actual: ' + (undefined << 1));
+}
+
+//CHECK#3
+if (new Number(1) << undefined !== 1) {
+ $ERROR('#3: new Number(1) << undefined === 1. Actual: ' + (new Number(1) << undefined));
+}
+
+//CHECK#4
+if (undefined << new Number(1) !== 0) {
+ $ERROR('#4: undefined << new Number(1) === 0. Actual: ' + (undefined << new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.5.js
new file mode 100644
index 000000000..f1efe3410
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T2.5;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) or Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true << "1" !== 2) {
+ $ERROR('#1: true << "1" === 2. Actual: ' + (true << "1"));
+}
+
+//CHECK#2
+if ("1" << true !== 2) {
+ $ERROR('#2: "1" << true === 2. Actual: ' + ("1" << true));
+}
+
+//CHECK#3
+if (new Boolean(true) << "1" !== 2) {
+ $ERROR('#3: new Boolean(true) << "1" === 2. Actual: ' + (new Boolean(true) << "1"));
+}
+
+//CHECK#4
+if ("1" << new Boolean(true) !== 2) {
+ $ERROR('#4: "1" << new Boolean(true) === 2. Actual: ' + ("1" << new Boolean(true)));
+}
+
+//CHECK#5
+if (true << new String("1") !== 2) {
+ $ERROR('#5: true << new String("1") === 2. Actual: ' + (true << new String("1")));
+}
+
+//CHECK#6
+if (new String("1") << true !== 2) {
+ $ERROR('#6: new String("1") << true === 2. Actual: ' + (new String("1") << true));
+}
+
+//CHECK#7
+if (new Boolean(true) << new String("1") !== 2) {
+ $ERROR('#7: new Boolean(true) << new String("1") === 2. Actual: ' + (new Boolean(true) << new String("1")));
+}
+
+//CHECK#8
+if (new String("1") << new Boolean(true) !== 2) {
+ $ERROR('#8: new String("1") << new Boolean(true) === 2. Actual: ' + (new String("1") << new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.6.js
new file mode 100644
index 000000000..e1111d7c9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T2.6;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ("1" << undefined !== 1) {
+ $ERROR('#1: "1" << undefined === 1. Actual: ' + ("1" << undefined));
+}
+
+//CHECK#2
+if (undefined << "1" !== 0) {
+ $ERROR('#2: undefined << "1" === 0. Actual: ' + (undefined << "1"));
+}
+
+//CHECK#3
+if (new String("1") << undefined !== 1) {
+ $ERROR('#3: new String("1") << undefined === 1. Actual: ' + (new String("1") << undefined));
+}
+
+//CHECK#4
+if (undefined << new String("1") !== 0) {
+ $ERROR('#4: undefined << new String("1") === 0. Actual: ' + (undefined << new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.7.js
new file mode 100644
index 000000000..b7b0cebc7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T2.7;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" << null !== 1) {
+ $ERROR('#1: "1" << null === 1. Actual: ' + ("1" << null));
+}
+
+//CHECK#2
+if (null << "1" !== 0) {
+ $ERROR('#2: null << "1" === 0. Actual: ' + (null << "1"));
+}
+
+//CHECK#3
+if (new String("1") << null !== 1) {
+ $ERROR('#3: new String("1") << null === 1. Actual: ' + (new String("1") << null));
+}
+
+//CHECK#4
+if (null << new String("1") !== 0) {
+ $ERROR('#4: null << new String("1") === 0. Actual: ' + (null << new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.8.js
new file mode 100644
index 000000000..8b5728949
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T2.8;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (true << undefined !== 1) {
+ $ERROR('#1: true << undefined === 1. Actual: ' + (true << undefined));
+}
+
+//CHECK#2
+if (undefined << true !== 0) {
+ $ERROR('#2: undefined << true === 0. Actual: ' + (undefined << true));
+}
+
+//CHECK#3
+if (new Boolean(true) << undefined !== 1) {
+ $ERROR('#3: new Boolean(true) << undefined === 1. Actual: ' + (new Boolean(true) << undefined));
+}
+
+//CHECK#4
+if (undefined << new Boolean(true) !== 0) {
+ $ERROR('#4: undefined << new Boolean(true) === 0. Actual: ' + (undefined << new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.9.js
new file mode 100644
index 000000000..2d7ad7913
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A3_T2.9;
+ * @section: 11.7.1;
+ * @assertion: Operator x << y returns ToNumber(x) << ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true << null !== 1) {
+ $ERROR('#1: true << null === 1. Actual: ' + (true << null));
+}
+
+//CHECK#2
+if (null << true !== 0) {
+ $ERROR('#2: null << true === 0. Actual: ' + (null << true));
+}
+
+//CHECK#3
+if (new Boolean(true) << null !== 1) {
+ $ERROR('#3: new Boolean(true) << null === 1. Actual: ' + (new Boolean(true) << null));
+}
+
+//CHECK#4
+if (null << new Boolean(true) !== 0) {
+ $ERROR('#4: null << new Boolean(true) === 0. Actual: ' + (null << new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T1.js
new file mode 100644
index 000000000..bd16822e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T1.js
@@ -0,0 +1,2570 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A4_T1;
+ * @section: 11.7.1;
+ * @assertion: Check operator x << y in distinct points;
+ * @description: ShiftExpression = -2^n, n = 0...15;
+ */
+
+//CHECK
+
+if (-1 << 0 !== -1) {
+ $ERROR('#1: -1 << 0 === -1. Actual: ' + (-1 << 0));
+}
+
+
+if (-2 << 0 !== -2) {
+ $ERROR('#2: -2 << 0 === -2. Actual: ' + (-2 << 0));
+}
+
+
+if (-4 << 0 !== -4) {
+ $ERROR('#3: -4 << 0 === -4. Actual: ' + (-4 << 0));
+}
+
+
+if (-8 << 0 !== -8) {
+ $ERROR('#4: -8 << 0 === -8. Actual: ' + (-8 << 0));
+}
+
+
+if (-16 << 0 !== -16) {
+ $ERROR('#5: -16 << 0 === -16. Actual: ' + (-16 << 0));
+}
+
+
+if (-32 << 0 !== -32) {
+ $ERROR('#6: -32 << 0 === -32. Actual: ' + (-32 << 0));
+}
+
+
+if (-64 << 0 !== -64) {
+ $ERROR('#7: -64 << 0 === -64. Actual: ' + (-64 << 0));
+}
+
+
+if (-128 << 0 !== -128) {
+ $ERROR('#8: -128 << 0 === -128. Actual: ' + (-128 << 0));
+}
+
+
+if (-256 << 0 !== -256) {
+ $ERROR('#9: -256 << 0 === -256. Actual: ' + (-256 << 0));
+}
+
+
+if (-512 << 0 !== -512) {
+ $ERROR('#10: -512 << 0 === -512. Actual: ' + (-512 << 0));
+}
+
+
+if (-1024 << 0 !== -1024) {
+ $ERROR('#11: -1024 << 0 === -1024. Actual: ' + (-1024 << 0));
+}
+
+
+if (-2048 << 0 !== -2048) {
+ $ERROR('#12: -2048 << 0 === -2048. Actual: ' + (-2048 << 0));
+}
+
+
+if (-4096 << 0 !== -4096) {
+ $ERROR('#13: -4096 << 0 === -4096. Actual: ' + (-4096 << 0));
+}
+
+
+if (-8192 << 0 !== -8192) {
+ $ERROR('#14: -8192 << 0 === -8192. Actual: ' + (-8192 << 0));
+}
+
+
+if (-16384 << 0 !== -16384) {
+ $ERROR('#15: -16384 << 0 === -16384. Actual: ' + (-16384 << 0));
+}
+
+
+if (-32768 << 0 !== -32768) {
+ $ERROR('#16: -32768 << 0 === -32768. Actual: ' + (-32768 << 0));
+}
+
+
+if (-65536 << 0 !== -65536) {
+ $ERROR('#17: -65536 << 0 === -65536. Actual: ' + (-65536 << 0));
+}
+
+
+if (-131072 << 0 !== -131072) {
+ $ERROR('#18: -131072 << 0 === -131072. Actual: ' + (-131072 << 0));
+}
+
+
+if (-262144 << 0 !== -262144) {
+ $ERROR('#19: -262144 << 0 === -262144. Actual: ' + (-262144 << 0));
+}
+
+
+if (-524288 << 0 !== -524288) {
+ $ERROR('#20: -524288 << 0 === -524288. Actual: ' + (-524288 << 0));
+}
+
+
+if (-1048576 << 0 !== -1048576) {
+ $ERROR('#21: -1048576 << 0 === -1048576. Actual: ' + (-1048576 << 0));
+}
+
+
+if (-2097152 << 0 !== -2097152) {
+ $ERROR('#22: -2097152 << 0 === -2097152. Actual: ' + (-2097152 << 0));
+}
+
+
+if (-4194304 << 0 !== -4194304) {
+ $ERROR('#23: -4194304 << 0 === -4194304. Actual: ' + (-4194304 << 0));
+}
+
+
+if (-8388608 << 0 !== -8388608) {
+ $ERROR('#24: -8388608 << 0 === -8388608. Actual: ' + (-8388608 << 0));
+}
+
+
+if (-16777216 << 0 !== -16777216) {
+ $ERROR('#25: -16777216 << 0 === -16777216. Actual: ' + (-16777216 << 0));
+}
+
+
+if (-33554432 << 0 !== -33554432) {
+ $ERROR('#26: -33554432 << 0 === -33554432. Actual: ' + (-33554432 << 0));
+}
+
+
+if (-67108864 << 0 !== -67108864) {
+ $ERROR('#27: -67108864 << 0 === -67108864. Actual: ' + (-67108864 << 0));
+}
+
+
+if (-134217728 << 0 !== -134217728) {
+ $ERROR('#28: -134217728 << 0 === -134217728. Actual: ' + (-134217728 << 0));
+}
+
+
+if (-268435456 << 0 !== -268435456) {
+ $ERROR('#29: -268435456 << 0 === -268435456. Actual: ' + (-268435456 << 0));
+}
+
+
+if (-536870912 << 0 !== -536870912) {
+ $ERROR('#30: -536870912 << 0 === -536870912. Actual: ' + (-536870912 << 0));
+}
+
+
+if (-1073741824 << 0 !== -1073741824) {
+ $ERROR('#31: -1073741824 << 0 === -1073741824. Actual: ' + (-1073741824 << 0));
+}
+
+
+if (-2147483648 << 0 !== -2147483648) {
+ $ERROR('#32: -2147483648 << 0 === -2147483648. Actual: ' + (-2147483648 << 0));
+}
+
+
+if (-1 << 1 !== -2) {
+ $ERROR('#33: -1 << 1 === -2. Actual: ' + (-1 << 1));
+}
+
+
+if (-2 << 1 !== -4) {
+ $ERROR('#34: -2 << 1 === -4. Actual: ' + (-2 << 1));
+}
+
+
+if (-4 << 1 !== -8) {
+ $ERROR('#35: -4 << 1 === -8. Actual: ' + (-4 << 1));
+}
+
+
+if (-8 << 1 !== -16) {
+ $ERROR('#36: -8 << 1 === -16. Actual: ' + (-8 << 1));
+}
+
+
+if (-16 << 1 !== -32) {
+ $ERROR('#37: -16 << 1 === -32. Actual: ' + (-16 << 1));
+}
+
+
+if (-32 << 1 !== -64) {
+ $ERROR('#38: -32 << 1 === -64. Actual: ' + (-32 << 1));
+}
+
+
+if (-64 << 1 !== -128) {
+ $ERROR('#39: -64 << 1 === -128. Actual: ' + (-64 << 1));
+}
+
+
+if (-128 << 1 !== -256) {
+ $ERROR('#40: -128 << 1 === -256. Actual: ' + (-128 << 1));
+}
+
+
+if (-256 << 1 !== -512) {
+ $ERROR('#41: -256 << 1 === -512. Actual: ' + (-256 << 1));
+}
+
+
+if (-512 << 1 !== -1024) {
+ $ERROR('#42: -512 << 1 === -1024. Actual: ' + (-512 << 1));
+}
+
+
+if (-1024 << 1 !== -2048) {
+ $ERROR('#43: -1024 << 1 === -2048. Actual: ' + (-1024 << 1));
+}
+
+
+if (-2048 << 1 !== -4096) {
+ $ERROR('#44: -2048 << 1 === -4096. Actual: ' + (-2048 << 1));
+}
+
+
+if (-4096 << 1 !== -8192) {
+ $ERROR('#45: -4096 << 1 === -8192. Actual: ' + (-4096 << 1));
+}
+
+
+if (-8192 << 1 !== -16384) {
+ $ERROR('#46: -8192 << 1 === -16384. Actual: ' + (-8192 << 1));
+}
+
+
+if (-16384 << 1 !== -32768) {
+ $ERROR('#47: -16384 << 1 === -32768. Actual: ' + (-16384 << 1));
+}
+
+
+if (-32768 << 1 !== -65536) {
+ $ERROR('#48: -32768 << 1 === -65536. Actual: ' + (-32768 << 1));
+}
+
+
+if (-65536 << 1 !== -131072) {
+ $ERROR('#49: -65536 << 1 === -131072. Actual: ' + (-65536 << 1));
+}
+
+
+if (-131072 << 1 !== -262144) {
+ $ERROR('#50: -131072 << 1 === -262144. Actual: ' + (-131072 << 1));
+}
+
+
+if (-262144 << 1 !== -524288) {
+ $ERROR('#51: -262144 << 1 === -524288. Actual: ' + (-262144 << 1));
+}
+
+
+if (-524288 << 1 !== -1048576) {
+ $ERROR('#52: -524288 << 1 === -1048576. Actual: ' + (-524288 << 1));
+}
+
+
+if (-1048576 << 1 !== -2097152) {
+ $ERROR('#53: -1048576 << 1 === -2097152. Actual: ' + (-1048576 << 1));
+}
+
+
+if (-2097152 << 1 !== -4194304) {
+ $ERROR('#54: -2097152 << 1 === -4194304. Actual: ' + (-2097152 << 1));
+}
+
+
+if (-4194304 << 1 !== -8388608) {
+ $ERROR('#55: -4194304 << 1 === -8388608. Actual: ' + (-4194304 << 1));
+}
+
+
+if (-8388608 << 1 !== -16777216) {
+ $ERROR('#56: -8388608 << 1 === -16777216. Actual: ' + (-8388608 << 1));
+}
+
+
+if (-16777216 << 1 !== -33554432) {
+ $ERROR('#57: -16777216 << 1 === -33554432. Actual: ' + (-16777216 << 1));
+}
+
+
+if (-33554432 << 1 !== -67108864) {
+ $ERROR('#58: -33554432 << 1 === -67108864. Actual: ' + (-33554432 << 1));
+}
+
+
+if (-67108864 << 1 !== -134217728) {
+ $ERROR('#59: -67108864 << 1 === -134217728. Actual: ' + (-67108864 << 1));
+}
+
+
+if (-134217728 << 1 !== -268435456) {
+ $ERROR('#60: -134217728 << 1 === -268435456. Actual: ' + (-134217728 << 1));
+}
+
+
+if (-268435456 << 1 !== -536870912) {
+ $ERROR('#61: -268435456 << 1 === -536870912. Actual: ' + (-268435456 << 1));
+}
+
+
+if (-536870912 << 1 !== -1073741824) {
+ $ERROR('#62: -536870912 << 1 === -1073741824. Actual: ' + (-536870912 << 1));
+}
+
+
+if (-1073741824 << 1 !== -2147483648) {
+ $ERROR('#63: -1073741824 << 1 === -2147483648. Actual: ' + (-1073741824 << 1));
+}
+
+
+if (-2147483648 << 1 !== 0) {
+ $ERROR('#64: -2147483648 << 1 === 0. Actual: ' + (-2147483648 << 1));
+}
+
+
+if (-1 << 2 !== -4) {
+ $ERROR('#65: -1 << 2 === -4. Actual: ' + (-1 << 2));
+}
+
+
+if (-2 << 2 !== -8) {
+ $ERROR('#66: -2 << 2 === -8. Actual: ' + (-2 << 2));
+}
+
+
+if (-4 << 2 !== -16) {
+ $ERROR('#67: -4 << 2 === -16. Actual: ' + (-4 << 2));
+}
+
+
+if (-8 << 2 !== -32) {
+ $ERROR('#68: -8 << 2 === -32. Actual: ' + (-8 << 2));
+}
+
+
+if (-16 << 2 !== -64) {
+ $ERROR('#69: -16 << 2 === -64. Actual: ' + (-16 << 2));
+}
+
+
+if (-32 << 2 !== -128) {
+ $ERROR('#70: -32 << 2 === -128. Actual: ' + (-32 << 2));
+}
+
+
+if (-64 << 2 !== -256) {
+ $ERROR('#71: -64 << 2 === -256. Actual: ' + (-64 << 2));
+}
+
+
+if (-128 << 2 !== -512) {
+ $ERROR('#72: -128 << 2 === -512. Actual: ' + (-128 << 2));
+}
+
+
+if (-256 << 2 !== -1024) {
+ $ERROR('#73: -256 << 2 === -1024. Actual: ' + (-256 << 2));
+}
+
+
+if (-512 << 2 !== -2048) {
+ $ERROR('#74: -512 << 2 === -2048. Actual: ' + (-512 << 2));
+}
+
+
+if (-1024 << 2 !== -4096) {
+ $ERROR('#75: -1024 << 2 === -4096. Actual: ' + (-1024 << 2));
+}
+
+
+if (-2048 << 2 !== -8192) {
+ $ERROR('#76: -2048 << 2 === -8192. Actual: ' + (-2048 << 2));
+}
+
+
+if (-4096 << 2 !== -16384) {
+ $ERROR('#77: -4096 << 2 === -16384. Actual: ' + (-4096 << 2));
+}
+
+
+if (-8192 << 2 !== -32768) {
+ $ERROR('#78: -8192 << 2 === -32768. Actual: ' + (-8192 << 2));
+}
+
+
+if (-16384 << 2 !== -65536) {
+ $ERROR('#79: -16384 << 2 === -65536. Actual: ' + (-16384 << 2));
+}
+
+
+if (-32768 << 2 !== -131072) {
+ $ERROR('#80: -32768 << 2 === -131072. Actual: ' + (-32768 << 2));
+}
+
+
+if (-65536 << 2 !== -262144) {
+ $ERROR('#81: -65536 << 2 === -262144. Actual: ' + (-65536 << 2));
+}
+
+
+if (-131072 << 2 !== -524288) {
+ $ERROR('#82: -131072 << 2 === -524288. Actual: ' + (-131072 << 2));
+}
+
+
+if (-262144 << 2 !== -1048576) {
+ $ERROR('#83: -262144 << 2 === -1048576. Actual: ' + (-262144 << 2));
+}
+
+
+if (-524288 << 2 !== -2097152) {
+ $ERROR('#84: -524288 << 2 === -2097152. Actual: ' + (-524288 << 2));
+}
+
+
+if (-1048576 << 2 !== -4194304) {
+ $ERROR('#85: -1048576 << 2 === -4194304. Actual: ' + (-1048576 << 2));
+}
+
+
+if (-2097152 << 2 !== -8388608) {
+ $ERROR('#86: -2097152 << 2 === -8388608. Actual: ' + (-2097152 << 2));
+}
+
+
+if (-4194304 << 2 !== -16777216) {
+ $ERROR('#87: -4194304 << 2 === -16777216. Actual: ' + (-4194304 << 2));
+}
+
+
+if (-8388608 << 2 !== -33554432) {
+ $ERROR('#88: -8388608 << 2 === -33554432. Actual: ' + (-8388608 << 2));
+}
+
+
+if (-16777216 << 2 !== -67108864) {
+ $ERROR('#89: -16777216 << 2 === -67108864. Actual: ' + (-16777216 << 2));
+}
+
+
+if (-33554432 << 2 !== -134217728) {
+ $ERROR('#90: -33554432 << 2 === -134217728. Actual: ' + (-33554432 << 2));
+}
+
+
+if (-67108864 << 2 !== -268435456) {
+ $ERROR('#91: -67108864 << 2 === -268435456. Actual: ' + (-67108864 << 2));
+}
+
+
+if (-134217728 << 2 !== -536870912) {
+ $ERROR('#92: -134217728 << 2 === -536870912. Actual: ' + (-134217728 << 2));
+}
+
+
+if (-268435456 << 2 !== -1073741824) {
+ $ERROR('#93: -268435456 << 2 === -1073741824. Actual: ' + (-268435456 << 2));
+}
+
+
+if (-536870912 << 2 !== -2147483648) {
+ $ERROR('#94: -536870912 << 2 === -2147483648. Actual: ' + (-536870912 << 2));
+}
+
+
+if (-1073741824 << 2 !== 0) {
+ $ERROR('#95: -1073741824 << 2 === 0. Actual: ' + (-1073741824 << 2));
+}
+
+
+if (-2147483648 << 2 !== 0) {
+ $ERROR('#96: -2147483648 << 2 === 0. Actual: ' + (-2147483648 << 2));
+}
+
+
+if (-1 << 3 !== -8) {
+ $ERROR('#97: -1 << 3 === -8. Actual: ' + (-1 << 3));
+}
+
+
+if (-2 << 3 !== -16) {
+ $ERROR('#98: -2 << 3 === -16. Actual: ' + (-2 << 3));
+}
+
+
+if (-4 << 3 !== -32) {
+ $ERROR('#99: -4 << 3 === -32. Actual: ' + (-4 << 3));
+}
+
+
+if (-8 << 3 !== -64) {
+ $ERROR('#100: -8 << 3 === -64. Actual: ' + (-8 << 3));
+}
+
+
+if (-16 << 3 !== -128) {
+ $ERROR('#101: -16 << 3 === -128. Actual: ' + (-16 << 3));
+}
+
+
+if (-32 << 3 !== -256) {
+ $ERROR('#102: -32 << 3 === -256. Actual: ' + (-32 << 3));
+}
+
+
+if (-64 << 3 !== -512) {
+ $ERROR('#103: -64 << 3 === -512. Actual: ' + (-64 << 3));
+}
+
+
+if (-128 << 3 !== -1024) {
+ $ERROR('#104: -128 << 3 === -1024. Actual: ' + (-128 << 3));
+}
+
+
+if (-256 << 3 !== -2048) {
+ $ERROR('#105: -256 << 3 === -2048. Actual: ' + (-256 << 3));
+}
+
+
+if (-512 << 3 !== -4096) {
+ $ERROR('#106: -512 << 3 === -4096. Actual: ' + (-512 << 3));
+}
+
+
+if (-1024 << 3 !== -8192) {
+ $ERROR('#107: -1024 << 3 === -8192. Actual: ' + (-1024 << 3));
+}
+
+
+if (-2048 << 3 !== -16384) {
+ $ERROR('#108: -2048 << 3 === -16384. Actual: ' + (-2048 << 3));
+}
+
+
+if (-4096 << 3 !== -32768) {
+ $ERROR('#109: -4096 << 3 === -32768. Actual: ' + (-4096 << 3));
+}
+
+
+if (-8192 << 3 !== -65536) {
+ $ERROR('#110: -8192 << 3 === -65536. Actual: ' + (-8192 << 3));
+}
+
+
+if (-16384 << 3 !== -131072) {
+ $ERROR('#111: -16384 << 3 === -131072. Actual: ' + (-16384 << 3));
+}
+
+
+if (-32768 << 3 !== -262144) {
+ $ERROR('#112: -32768 << 3 === -262144. Actual: ' + (-32768 << 3));
+}
+
+
+if (-65536 << 3 !== -524288) {
+ $ERROR('#113: -65536 << 3 === -524288. Actual: ' + (-65536 << 3));
+}
+
+
+if (-131072 << 3 !== -1048576) {
+ $ERROR('#114: -131072 << 3 === -1048576. Actual: ' + (-131072 << 3));
+}
+
+
+if (-262144 << 3 !== -2097152) {
+ $ERROR('#115: -262144 << 3 === -2097152. Actual: ' + (-262144 << 3));
+}
+
+
+if (-524288 << 3 !== -4194304) {
+ $ERROR('#116: -524288 << 3 === -4194304. Actual: ' + (-524288 << 3));
+}
+
+
+if (-1048576 << 3 !== -8388608) {
+ $ERROR('#117: -1048576 << 3 === -8388608. Actual: ' + (-1048576 << 3));
+}
+
+
+if (-2097152 << 3 !== -16777216) {
+ $ERROR('#118: -2097152 << 3 === -16777216. Actual: ' + (-2097152 << 3));
+}
+
+
+if (-4194304 << 3 !== -33554432) {
+ $ERROR('#119: -4194304 << 3 === -33554432. Actual: ' + (-4194304 << 3));
+}
+
+
+if (-8388608 << 3 !== -67108864) {
+ $ERROR('#120: -8388608 << 3 === -67108864. Actual: ' + (-8388608 << 3));
+}
+
+
+if (-16777216 << 3 !== -134217728) {
+ $ERROR('#121: -16777216 << 3 === -134217728. Actual: ' + (-16777216 << 3));
+}
+
+
+if (-33554432 << 3 !== -268435456) {
+ $ERROR('#122: -33554432 << 3 === -268435456. Actual: ' + (-33554432 << 3));
+}
+
+
+if (-67108864 << 3 !== -536870912) {
+ $ERROR('#123: -67108864 << 3 === -536870912. Actual: ' + (-67108864 << 3));
+}
+
+
+if (-134217728 << 3 !== -1073741824) {
+ $ERROR('#124: -134217728 << 3 === -1073741824. Actual: ' + (-134217728 << 3));
+}
+
+
+if (-268435456 << 3 !== -2147483648) {
+ $ERROR('#125: -268435456 << 3 === -2147483648. Actual: ' + (-268435456 << 3));
+}
+
+
+if (-536870912 << 3 !== 0) {
+ $ERROR('#126: -536870912 << 3 === 0. Actual: ' + (-536870912 << 3));
+}
+
+
+if (-1073741824 << 3 !== 0) {
+ $ERROR('#127: -1073741824 << 3 === 0. Actual: ' + (-1073741824 << 3));
+}
+
+
+if (-2147483648 << 3 !== 0) {
+ $ERROR('#128: -2147483648 << 3 === 0. Actual: ' + (-2147483648 << 3));
+}
+
+
+if (-1 << 4 !== -16) {
+ $ERROR('#129: -1 << 4 === -16. Actual: ' + (-1 << 4));
+}
+
+
+if (-2 << 4 !== -32) {
+ $ERROR('#130: -2 << 4 === -32. Actual: ' + (-2 << 4));
+}
+
+
+if (-4 << 4 !== -64) {
+ $ERROR('#131: -4 << 4 === -64. Actual: ' + (-4 << 4));
+}
+
+
+if (-8 << 4 !== -128) {
+ $ERROR('#132: -8 << 4 === -128. Actual: ' + (-8 << 4));
+}
+
+
+if (-16 << 4 !== -256) {
+ $ERROR('#133: -16 << 4 === -256. Actual: ' + (-16 << 4));
+}
+
+
+if (-32 << 4 !== -512) {
+ $ERROR('#134: -32 << 4 === -512. Actual: ' + (-32 << 4));
+}
+
+
+if (-64 << 4 !== -1024) {
+ $ERROR('#135: -64 << 4 === -1024. Actual: ' + (-64 << 4));
+}
+
+
+if (-128 << 4 !== -2048) {
+ $ERROR('#136: -128 << 4 === -2048. Actual: ' + (-128 << 4));
+}
+
+
+if (-256 << 4 !== -4096) {
+ $ERROR('#137: -256 << 4 === -4096. Actual: ' + (-256 << 4));
+}
+
+
+if (-512 << 4 !== -8192) {
+ $ERROR('#138: -512 << 4 === -8192. Actual: ' + (-512 << 4));
+}
+
+
+if (-1024 << 4 !== -16384) {
+ $ERROR('#139: -1024 << 4 === -16384. Actual: ' + (-1024 << 4));
+}
+
+
+if (-2048 << 4 !== -32768) {
+ $ERROR('#140: -2048 << 4 === -32768. Actual: ' + (-2048 << 4));
+}
+
+
+if (-4096 << 4 !== -65536) {
+ $ERROR('#141: -4096 << 4 === -65536. Actual: ' + (-4096 << 4));
+}
+
+
+if (-8192 << 4 !== -131072) {
+ $ERROR('#142: -8192 << 4 === -131072. Actual: ' + (-8192 << 4));
+}
+
+
+if (-16384 << 4 !== -262144) {
+ $ERROR('#143: -16384 << 4 === -262144. Actual: ' + (-16384 << 4));
+}
+
+
+if (-32768 << 4 !== -524288) {
+ $ERROR('#144: -32768 << 4 === -524288. Actual: ' + (-32768 << 4));
+}
+
+
+if (-65536 << 4 !== -1048576) {
+ $ERROR('#145: -65536 << 4 === -1048576. Actual: ' + (-65536 << 4));
+}
+
+
+if (-131072 << 4 !== -2097152) {
+ $ERROR('#146: -131072 << 4 === -2097152. Actual: ' + (-131072 << 4));
+}
+
+
+if (-262144 << 4 !== -4194304) {
+ $ERROR('#147: -262144 << 4 === -4194304. Actual: ' + (-262144 << 4));
+}
+
+
+if (-524288 << 4 !== -8388608) {
+ $ERROR('#148: -524288 << 4 === -8388608. Actual: ' + (-524288 << 4));
+}
+
+
+if (-1048576 << 4 !== -16777216) {
+ $ERROR('#149: -1048576 << 4 === -16777216. Actual: ' + (-1048576 << 4));
+}
+
+
+if (-2097152 << 4 !== -33554432) {
+ $ERROR('#150: -2097152 << 4 === -33554432. Actual: ' + (-2097152 << 4));
+}
+
+
+if (-4194304 << 4 !== -67108864) {
+ $ERROR('#151: -4194304 << 4 === -67108864. Actual: ' + (-4194304 << 4));
+}
+
+
+if (-8388608 << 4 !== -134217728) {
+ $ERROR('#152: -8388608 << 4 === -134217728. Actual: ' + (-8388608 << 4));
+}
+
+
+if (-16777216 << 4 !== -268435456) {
+ $ERROR('#153: -16777216 << 4 === -268435456. Actual: ' + (-16777216 << 4));
+}
+
+
+if (-33554432 << 4 !== -536870912) {
+ $ERROR('#154: -33554432 << 4 === -536870912. Actual: ' + (-33554432 << 4));
+}
+
+
+if (-67108864 << 4 !== -1073741824) {
+ $ERROR('#155: -67108864 << 4 === -1073741824. Actual: ' + (-67108864 << 4));
+}
+
+
+if (-134217728 << 4 !== -2147483648) {
+ $ERROR('#156: -134217728 << 4 === -2147483648. Actual: ' + (-134217728 << 4));
+}
+
+
+if (-268435456 << 4 !== 0) {
+ $ERROR('#157: -268435456 << 4 === 0. Actual: ' + (-268435456 << 4));
+}
+
+
+if (-536870912 << 4 !== 0) {
+ $ERROR('#158: -536870912 << 4 === 0. Actual: ' + (-536870912 << 4));
+}
+
+
+if (-1073741824 << 4 !== 0) {
+ $ERROR('#159: -1073741824 << 4 === 0. Actual: ' + (-1073741824 << 4));
+}
+
+
+if (-2147483648 << 4 !== 0) {
+ $ERROR('#160: -2147483648 << 4 === 0. Actual: ' + (-2147483648 << 4));
+}
+
+
+if (-1 << 5 !== -32) {
+ $ERROR('#161: -1 << 5 === -32. Actual: ' + (-1 << 5));
+}
+
+
+if (-2 << 5 !== -64) {
+ $ERROR('#162: -2 << 5 === -64. Actual: ' + (-2 << 5));
+}
+
+
+if (-4 << 5 !== -128) {
+ $ERROR('#163: -4 << 5 === -128. Actual: ' + (-4 << 5));
+}
+
+
+if (-8 << 5 !== -256) {
+ $ERROR('#164: -8 << 5 === -256. Actual: ' + (-8 << 5));
+}
+
+
+if (-16 << 5 !== -512) {
+ $ERROR('#165: -16 << 5 === -512. Actual: ' + (-16 << 5));
+}
+
+
+if (-32 << 5 !== -1024) {
+ $ERROR('#166: -32 << 5 === -1024. Actual: ' + (-32 << 5));
+}
+
+
+if (-64 << 5 !== -2048) {
+ $ERROR('#167: -64 << 5 === -2048. Actual: ' + (-64 << 5));
+}
+
+
+if (-128 << 5 !== -4096) {
+ $ERROR('#168: -128 << 5 === -4096. Actual: ' + (-128 << 5));
+}
+
+
+if (-256 << 5 !== -8192) {
+ $ERROR('#169: -256 << 5 === -8192. Actual: ' + (-256 << 5));
+}
+
+
+if (-512 << 5 !== -16384) {
+ $ERROR('#170: -512 << 5 === -16384. Actual: ' + (-512 << 5));
+}
+
+
+if (-1024 << 5 !== -32768) {
+ $ERROR('#171: -1024 << 5 === -32768. Actual: ' + (-1024 << 5));
+}
+
+
+if (-2048 << 5 !== -65536) {
+ $ERROR('#172: -2048 << 5 === -65536. Actual: ' + (-2048 << 5));
+}
+
+
+if (-4096 << 5 !== -131072) {
+ $ERROR('#173: -4096 << 5 === -131072. Actual: ' + (-4096 << 5));
+}
+
+
+if (-8192 << 5 !== -262144) {
+ $ERROR('#174: -8192 << 5 === -262144. Actual: ' + (-8192 << 5));
+}
+
+
+if (-16384 << 5 !== -524288) {
+ $ERROR('#175: -16384 << 5 === -524288. Actual: ' + (-16384 << 5));
+}
+
+
+if (-32768 << 5 !== -1048576) {
+ $ERROR('#176: -32768 << 5 === -1048576. Actual: ' + (-32768 << 5));
+}
+
+
+if (-65536 << 5 !== -2097152) {
+ $ERROR('#177: -65536 << 5 === -2097152. Actual: ' + (-65536 << 5));
+}
+
+
+if (-131072 << 5 !== -4194304) {
+ $ERROR('#178: -131072 << 5 === -4194304. Actual: ' + (-131072 << 5));
+}
+
+
+if (-262144 << 5 !== -8388608) {
+ $ERROR('#179: -262144 << 5 === -8388608. Actual: ' + (-262144 << 5));
+}
+
+
+if (-524288 << 5 !== -16777216) {
+ $ERROR('#180: -524288 << 5 === -16777216. Actual: ' + (-524288 << 5));
+}
+
+
+if (-1048576 << 5 !== -33554432) {
+ $ERROR('#181: -1048576 << 5 === -33554432. Actual: ' + (-1048576 << 5));
+}
+
+
+if (-2097152 << 5 !== -67108864) {
+ $ERROR('#182: -2097152 << 5 === -67108864. Actual: ' + (-2097152 << 5));
+}
+
+
+if (-4194304 << 5 !== -134217728) {
+ $ERROR('#183: -4194304 << 5 === -134217728. Actual: ' + (-4194304 << 5));
+}
+
+
+if (-8388608 << 5 !== -268435456) {
+ $ERROR('#184: -8388608 << 5 === -268435456. Actual: ' + (-8388608 << 5));
+}
+
+
+if (-16777216 << 5 !== -536870912) {
+ $ERROR('#185: -16777216 << 5 === -536870912. Actual: ' + (-16777216 << 5));
+}
+
+
+if (-33554432 << 5 !== -1073741824) {
+ $ERROR('#186: -33554432 << 5 === -1073741824. Actual: ' + (-33554432 << 5));
+}
+
+
+if (-67108864 << 5 !== -2147483648) {
+ $ERROR('#187: -67108864 << 5 === -2147483648. Actual: ' + (-67108864 << 5));
+}
+
+
+if (-134217728 << 5 !== 0) {
+ $ERROR('#188: -134217728 << 5 === 0. Actual: ' + (-134217728 << 5));
+}
+
+
+if (-268435456 << 5 !== 0) {
+ $ERROR('#189: -268435456 << 5 === 0. Actual: ' + (-268435456 << 5));
+}
+
+
+if (-536870912 << 5 !== 0) {
+ $ERROR('#190: -536870912 << 5 === 0. Actual: ' + (-536870912 << 5));
+}
+
+
+if (-1073741824 << 5 !== 0) {
+ $ERROR('#191: -1073741824 << 5 === 0. Actual: ' + (-1073741824 << 5));
+}
+
+
+if (-2147483648 << 5 !== 0) {
+ $ERROR('#192: -2147483648 << 5 === 0. Actual: ' + (-2147483648 << 5));
+}
+
+
+if (-1 << 6 !== -64) {
+ $ERROR('#193: -1 << 6 === -64. Actual: ' + (-1 << 6));
+}
+
+
+if (-2 << 6 !== -128) {
+ $ERROR('#194: -2 << 6 === -128. Actual: ' + (-2 << 6));
+}
+
+
+if (-4 << 6 !== -256) {
+ $ERROR('#195: -4 << 6 === -256. Actual: ' + (-4 << 6));
+}
+
+
+if (-8 << 6 !== -512) {
+ $ERROR('#196: -8 << 6 === -512. Actual: ' + (-8 << 6));
+}
+
+
+if (-16 << 6 !== -1024) {
+ $ERROR('#197: -16 << 6 === -1024. Actual: ' + (-16 << 6));
+}
+
+
+if (-32 << 6 !== -2048) {
+ $ERROR('#198: -32 << 6 === -2048. Actual: ' + (-32 << 6));
+}
+
+
+if (-64 << 6 !== -4096) {
+ $ERROR('#199: -64 << 6 === -4096. Actual: ' + (-64 << 6));
+}
+
+
+if (-128 << 6 !== -8192) {
+ $ERROR('#200: -128 << 6 === -8192. Actual: ' + (-128 << 6));
+}
+
+
+if (-256 << 6 !== -16384) {
+ $ERROR('#201: -256 << 6 === -16384. Actual: ' + (-256 << 6));
+}
+
+
+if (-512 << 6 !== -32768) {
+ $ERROR('#202: -512 << 6 === -32768. Actual: ' + (-512 << 6));
+}
+
+
+if (-1024 << 6 !== -65536) {
+ $ERROR('#203: -1024 << 6 === -65536. Actual: ' + (-1024 << 6));
+}
+
+
+if (-2048 << 6 !== -131072) {
+ $ERROR('#204: -2048 << 6 === -131072. Actual: ' + (-2048 << 6));
+}
+
+
+if (-4096 << 6 !== -262144) {
+ $ERROR('#205: -4096 << 6 === -262144. Actual: ' + (-4096 << 6));
+}
+
+
+if (-8192 << 6 !== -524288) {
+ $ERROR('#206: -8192 << 6 === -524288. Actual: ' + (-8192 << 6));
+}
+
+
+if (-16384 << 6 !== -1048576) {
+ $ERROR('#207: -16384 << 6 === -1048576. Actual: ' + (-16384 << 6));
+}
+
+
+if (-32768 << 6 !== -2097152) {
+ $ERROR('#208: -32768 << 6 === -2097152. Actual: ' + (-32768 << 6));
+}
+
+
+if (-65536 << 6 !== -4194304) {
+ $ERROR('#209: -65536 << 6 === -4194304. Actual: ' + (-65536 << 6));
+}
+
+
+if (-131072 << 6 !== -8388608) {
+ $ERROR('#210: -131072 << 6 === -8388608. Actual: ' + (-131072 << 6));
+}
+
+
+if (-262144 << 6 !== -16777216) {
+ $ERROR('#211: -262144 << 6 === -16777216. Actual: ' + (-262144 << 6));
+}
+
+
+if (-524288 << 6 !== -33554432) {
+ $ERROR('#212: -524288 << 6 === -33554432. Actual: ' + (-524288 << 6));
+}
+
+
+if (-1048576 << 6 !== -67108864) {
+ $ERROR('#213: -1048576 << 6 === -67108864. Actual: ' + (-1048576 << 6));
+}
+
+
+if (-2097152 << 6 !== -134217728) {
+ $ERROR('#214: -2097152 << 6 === -134217728. Actual: ' + (-2097152 << 6));
+}
+
+
+if (-4194304 << 6 !== -268435456) {
+ $ERROR('#215: -4194304 << 6 === -268435456. Actual: ' + (-4194304 << 6));
+}
+
+
+if (-8388608 << 6 !== -536870912) {
+ $ERROR('#216: -8388608 << 6 === -536870912. Actual: ' + (-8388608 << 6));
+}
+
+
+if (-16777216 << 6 !== -1073741824) {
+ $ERROR('#217: -16777216 << 6 === -1073741824. Actual: ' + (-16777216 << 6));
+}
+
+
+if (-33554432 << 6 !== -2147483648) {
+ $ERROR('#218: -33554432 << 6 === -2147483648. Actual: ' + (-33554432 << 6));
+}
+
+
+if (-67108864 << 6 !== 0) {
+ $ERROR('#219: -67108864 << 6 === 0. Actual: ' + (-67108864 << 6));
+}
+
+
+if (-134217728 << 6 !== 0) {
+ $ERROR('#220: -134217728 << 6 === 0. Actual: ' + (-134217728 << 6));
+}
+
+
+if (-268435456 << 6 !== 0) {
+ $ERROR('#221: -268435456 << 6 === 0. Actual: ' + (-268435456 << 6));
+}
+
+
+if (-536870912 << 6 !== 0) {
+ $ERROR('#222: -536870912 << 6 === 0. Actual: ' + (-536870912 << 6));
+}
+
+
+if (-1073741824 << 6 !== 0) {
+ $ERROR('#223: -1073741824 << 6 === 0. Actual: ' + (-1073741824 << 6));
+}
+
+
+if (-2147483648 << 6 !== 0) {
+ $ERROR('#224: -2147483648 << 6 === 0. Actual: ' + (-2147483648 << 6));
+}
+
+
+if (-1 << 7 !== -128) {
+ $ERROR('#225: -1 << 7 === -128. Actual: ' + (-1 << 7));
+}
+
+
+if (-2 << 7 !== -256) {
+ $ERROR('#226: -2 << 7 === -256. Actual: ' + (-2 << 7));
+}
+
+
+if (-4 << 7 !== -512) {
+ $ERROR('#227: -4 << 7 === -512. Actual: ' + (-4 << 7));
+}
+
+
+if (-8 << 7 !== -1024) {
+ $ERROR('#228: -8 << 7 === -1024. Actual: ' + (-8 << 7));
+}
+
+
+if (-16 << 7 !== -2048) {
+ $ERROR('#229: -16 << 7 === -2048. Actual: ' + (-16 << 7));
+}
+
+
+if (-32 << 7 !== -4096) {
+ $ERROR('#230: -32 << 7 === -4096. Actual: ' + (-32 << 7));
+}
+
+
+if (-64 << 7 !== -8192) {
+ $ERROR('#231: -64 << 7 === -8192. Actual: ' + (-64 << 7));
+}
+
+
+if (-128 << 7 !== -16384) {
+ $ERROR('#232: -128 << 7 === -16384. Actual: ' + (-128 << 7));
+}
+
+
+if (-256 << 7 !== -32768) {
+ $ERROR('#233: -256 << 7 === -32768. Actual: ' + (-256 << 7));
+}
+
+
+if (-512 << 7 !== -65536) {
+ $ERROR('#234: -512 << 7 === -65536. Actual: ' + (-512 << 7));
+}
+
+
+if (-1024 << 7 !== -131072) {
+ $ERROR('#235: -1024 << 7 === -131072. Actual: ' + (-1024 << 7));
+}
+
+
+if (-2048 << 7 !== -262144) {
+ $ERROR('#236: -2048 << 7 === -262144. Actual: ' + (-2048 << 7));
+}
+
+
+if (-4096 << 7 !== -524288) {
+ $ERROR('#237: -4096 << 7 === -524288. Actual: ' + (-4096 << 7));
+}
+
+
+if (-8192 << 7 !== -1048576) {
+ $ERROR('#238: -8192 << 7 === -1048576. Actual: ' + (-8192 << 7));
+}
+
+
+if (-16384 << 7 !== -2097152) {
+ $ERROR('#239: -16384 << 7 === -2097152. Actual: ' + (-16384 << 7));
+}
+
+
+if (-32768 << 7 !== -4194304) {
+ $ERROR('#240: -32768 << 7 === -4194304. Actual: ' + (-32768 << 7));
+}
+
+
+if (-65536 << 7 !== -8388608) {
+ $ERROR('#241: -65536 << 7 === -8388608. Actual: ' + (-65536 << 7));
+}
+
+
+if (-131072 << 7 !== -16777216) {
+ $ERROR('#242: -131072 << 7 === -16777216. Actual: ' + (-131072 << 7));
+}
+
+
+if (-262144 << 7 !== -33554432) {
+ $ERROR('#243: -262144 << 7 === -33554432. Actual: ' + (-262144 << 7));
+}
+
+
+if (-524288 << 7 !== -67108864) {
+ $ERROR('#244: -524288 << 7 === -67108864. Actual: ' + (-524288 << 7));
+}
+
+
+if (-1048576 << 7 !== -134217728) {
+ $ERROR('#245: -1048576 << 7 === -134217728. Actual: ' + (-1048576 << 7));
+}
+
+
+if (-2097152 << 7 !== -268435456) {
+ $ERROR('#246: -2097152 << 7 === -268435456. Actual: ' + (-2097152 << 7));
+}
+
+
+if (-4194304 << 7 !== -536870912) {
+ $ERROR('#247: -4194304 << 7 === -536870912. Actual: ' + (-4194304 << 7));
+}
+
+
+if (-8388608 << 7 !== -1073741824) {
+ $ERROR('#248: -8388608 << 7 === -1073741824. Actual: ' + (-8388608 << 7));
+}
+
+
+if (-16777216 << 7 !== -2147483648) {
+ $ERROR('#249: -16777216 << 7 === -2147483648. Actual: ' + (-16777216 << 7));
+}
+
+
+if (-33554432 << 7 !== 0) {
+ $ERROR('#250: -33554432 << 7 === 0. Actual: ' + (-33554432 << 7));
+}
+
+
+if (-67108864 << 7 !== 0) {
+ $ERROR('#251: -67108864 << 7 === 0. Actual: ' + (-67108864 << 7));
+}
+
+
+if (-134217728 << 7 !== 0) {
+ $ERROR('#252: -134217728 << 7 === 0. Actual: ' + (-134217728 << 7));
+}
+
+
+if (-268435456 << 7 !== 0) {
+ $ERROR('#253: -268435456 << 7 === 0. Actual: ' + (-268435456 << 7));
+}
+
+
+if (-536870912 << 7 !== 0) {
+ $ERROR('#254: -536870912 << 7 === 0. Actual: ' + (-536870912 << 7));
+}
+
+
+if (-1073741824 << 7 !== 0) {
+ $ERROR('#255: -1073741824 << 7 === 0. Actual: ' + (-1073741824 << 7));
+}
+
+
+if (-2147483648 << 7 !== 0) {
+ $ERROR('#256: -2147483648 << 7 === 0. Actual: ' + (-2147483648 << 7));
+}
+
+
+if (-1 << 8 !== -256) {
+ $ERROR('#257: -1 << 8 === -256. Actual: ' + (-1 << 8));
+}
+
+
+if (-2 << 8 !== -512) {
+ $ERROR('#258: -2 << 8 === -512. Actual: ' + (-2 << 8));
+}
+
+
+if (-4 << 8 !== -1024) {
+ $ERROR('#259: -4 << 8 === -1024. Actual: ' + (-4 << 8));
+}
+
+
+if (-8 << 8 !== -2048) {
+ $ERROR('#260: -8 << 8 === -2048. Actual: ' + (-8 << 8));
+}
+
+
+if (-16 << 8 !== -4096) {
+ $ERROR('#261: -16 << 8 === -4096. Actual: ' + (-16 << 8));
+}
+
+
+if (-32 << 8 !== -8192) {
+ $ERROR('#262: -32 << 8 === -8192. Actual: ' + (-32 << 8));
+}
+
+
+if (-64 << 8 !== -16384) {
+ $ERROR('#263: -64 << 8 === -16384. Actual: ' + (-64 << 8));
+}
+
+
+if (-128 << 8 !== -32768) {
+ $ERROR('#264: -128 << 8 === -32768. Actual: ' + (-128 << 8));
+}
+
+
+if (-256 << 8 !== -65536) {
+ $ERROR('#265: -256 << 8 === -65536. Actual: ' + (-256 << 8));
+}
+
+
+if (-512 << 8 !== -131072) {
+ $ERROR('#266: -512 << 8 === -131072. Actual: ' + (-512 << 8));
+}
+
+
+if (-1024 << 8 !== -262144) {
+ $ERROR('#267: -1024 << 8 === -262144. Actual: ' + (-1024 << 8));
+}
+
+
+if (-2048 << 8 !== -524288) {
+ $ERROR('#268: -2048 << 8 === -524288. Actual: ' + (-2048 << 8));
+}
+
+
+if (-4096 << 8 !== -1048576) {
+ $ERROR('#269: -4096 << 8 === -1048576. Actual: ' + (-4096 << 8));
+}
+
+
+if (-8192 << 8 !== -2097152) {
+ $ERROR('#270: -8192 << 8 === -2097152. Actual: ' + (-8192 << 8));
+}
+
+
+if (-16384 << 8 !== -4194304) {
+ $ERROR('#271: -16384 << 8 === -4194304. Actual: ' + (-16384 << 8));
+}
+
+
+if (-32768 << 8 !== -8388608) {
+ $ERROR('#272: -32768 << 8 === -8388608. Actual: ' + (-32768 << 8));
+}
+
+
+if (-65536 << 8 !== -16777216) {
+ $ERROR('#273: -65536 << 8 === -16777216. Actual: ' + (-65536 << 8));
+}
+
+
+if (-131072 << 8 !== -33554432) {
+ $ERROR('#274: -131072 << 8 === -33554432. Actual: ' + (-131072 << 8));
+}
+
+
+if (-262144 << 8 !== -67108864) {
+ $ERROR('#275: -262144 << 8 === -67108864. Actual: ' + (-262144 << 8));
+}
+
+
+if (-524288 << 8 !== -134217728) {
+ $ERROR('#276: -524288 << 8 === -134217728. Actual: ' + (-524288 << 8));
+}
+
+
+if (-1048576 << 8 !== -268435456) {
+ $ERROR('#277: -1048576 << 8 === -268435456. Actual: ' + (-1048576 << 8));
+}
+
+
+if (-2097152 << 8 !== -536870912) {
+ $ERROR('#278: -2097152 << 8 === -536870912. Actual: ' + (-2097152 << 8));
+}
+
+
+if (-4194304 << 8 !== -1073741824) {
+ $ERROR('#279: -4194304 << 8 === -1073741824. Actual: ' + (-4194304 << 8));
+}
+
+
+if (-8388608 << 8 !== -2147483648) {
+ $ERROR('#280: -8388608 << 8 === -2147483648. Actual: ' + (-8388608 << 8));
+}
+
+
+if (-16777216 << 8 !== 0) {
+ $ERROR('#281: -16777216 << 8 === 0. Actual: ' + (-16777216 << 8));
+}
+
+
+if (-33554432 << 8 !== 0) {
+ $ERROR('#282: -33554432 << 8 === 0. Actual: ' + (-33554432 << 8));
+}
+
+
+if (-67108864 << 8 !== 0) {
+ $ERROR('#283: -67108864 << 8 === 0. Actual: ' + (-67108864 << 8));
+}
+
+
+if (-134217728 << 8 !== 0) {
+ $ERROR('#284: -134217728 << 8 === 0. Actual: ' + (-134217728 << 8));
+}
+
+
+if (-268435456 << 8 !== 0) {
+ $ERROR('#285: -268435456 << 8 === 0. Actual: ' + (-268435456 << 8));
+}
+
+
+if (-536870912 << 8 !== 0) {
+ $ERROR('#286: -536870912 << 8 === 0. Actual: ' + (-536870912 << 8));
+}
+
+
+if (-1073741824 << 8 !== 0) {
+ $ERROR('#287: -1073741824 << 8 === 0. Actual: ' + (-1073741824 << 8));
+}
+
+
+if (-2147483648 << 8 !== 0) {
+ $ERROR('#288: -2147483648 << 8 === 0. Actual: ' + (-2147483648 << 8));
+}
+
+
+if (-1 << 9 !== -512) {
+ $ERROR('#289: -1 << 9 === -512. Actual: ' + (-1 << 9));
+}
+
+
+if (-2 << 9 !== -1024) {
+ $ERROR('#290: -2 << 9 === -1024. Actual: ' + (-2 << 9));
+}
+
+
+if (-4 << 9 !== -2048) {
+ $ERROR('#291: -4 << 9 === -2048. Actual: ' + (-4 << 9));
+}
+
+
+if (-8 << 9 !== -4096) {
+ $ERROR('#292: -8 << 9 === -4096. Actual: ' + (-8 << 9));
+}
+
+
+if (-16 << 9 !== -8192) {
+ $ERROR('#293: -16 << 9 === -8192. Actual: ' + (-16 << 9));
+}
+
+
+if (-32 << 9 !== -16384) {
+ $ERROR('#294: -32 << 9 === -16384. Actual: ' + (-32 << 9));
+}
+
+
+if (-64 << 9 !== -32768) {
+ $ERROR('#295: -64 << 9 === -32768. Actual: ' + (-64 << 9));
+}
+
+
+if (-128 << 9 !== -65536) {
+ $ERROR('#296: -128 << 9 === -65536. Actual: ' + (-128 << 9));
+}
+
+
+if (-256 << 9 !== -131072) {
+ $ERROR('#297: -256 << 9 === -131072. Actual: ' + (-256 << 9));
+}
+
+
+if (-512 << 9 !== -262144) {
+ $ERROR('#298: -512 << 9 === -262144. Actual: ' + (-512 << 9));
+}
+
+
+if (-1024 << 9 !== -524288) {
+ $ERROR('#299: -1024 << 9 === -524288. Actual: ' + (-1024 << 9));
+}
+
+
+if (-2048 << 9 !== -1048576) {
+ $ERROR('#300: -2048 << 9 === -1048576. Actual: ' + (-2048 << 9));
+}
+
+
+if (-4096 << 9 !== -2097152) {
+ $ERROR('#301: -4096 << 9 === -2097152. Actual: ' + (-4096 << 9));
+}
+
+
+if (-8192 << 9 !== -4194304) {
+ $ERROR('#302: -8192 << 9 === -4194304. Actual: ' + (-8192 << 9));
+}
+
+
+if (-16384 << 9 !== -8388608) {
+ $ERROR('#303: -16384 << 9 === -8388608. Actual: ' + (-16384 << 9));
+}
+
+
+if (-32768 << 9 !== -16777216) {
+ $ERROR('#304: -32768 << 9 === -16777216. Actual: ' + (-32768 << 9));
+}
+
+
+if (-65536 << 9 !== -33554432) {
+ $ERROR('#305: -65536 << 9 === -33554432. Actual: ' + (-65536 << 9));
+}
+
+
+if (-131072 << 9 !== -67108864) {
+ $ERROR('#306: -131072 << 9 === -67108864. Actual: ' + (-131072 << 9));
+}
+
+
+if (-262144 << 9 !== -134217728) {
+ $ERROR('#307: -262144 << 9 === -134217728. Actual: ' + (-262144 << 9));
+}
+
+
+if (-524288 << 9 !== -268435456) {
+ $ERROR('#308: -524288 << 9 === -268435456. Actual: ' + (-524288 << 9));
+}
+
+
+if (-1048576 << 9 !== -536870912) {
+ $ERROR('#309: -1048576 << 9 === -536870912. Actual: ' + (-1048576 << 9));
+}
+
+
+if (-2097152 << 9 !== -1073741824) {
+ $ERROR('#310: -2097152 << 9 === -1073741824. Actual: ' + (-2097152 << 9));
+}
+
+
+if (-4194304 << 9 !== -2147483648) {
+ $ERROR('#311: -4194304 << 9 === -2147483648. Actual: ' + (-4194304 << 9));
+}
+
+
+if (-8388608 << 9 !== 0) {
+ $ERROR('#312: -8388608 << 9 === 0. Actual: ' + (-8388608 << 9));
+}
+
+
+if (-16777216 << 9 !== 0) {
+ $ERROR('#313: -16777216 << 9 === 0. Actual: ' + (-16777216 << 9));
+}
+
+
+if (-33554432 << 9 !== 0) {
+ $ERROR('#314: -33554432 << 9 === 0. Actual: ' + (-33554432 << 9));
+}
+
+
+if (-67108864 << 9 !== 0) {
+ $ERROR('#315: -67108864 << 9 === 0. Actual: ' + (-67108864 << 9));
+}
+
+
+if (-134217728 << 9 !== 0) {
+ $ERROR('#316: -134217728 << 9 === 0. Actual: ' + (-134217728 << 9));
+}
+
+
+if (-268435456 << 9 !== 0) {
+ $ERROR('#317: -268435456 << 9 === 0. Actual: ' + (-268435456 << 9));
+}
+
+
+if (-536870912 << 9 !== 0) {
+ $ERROR('#318: -536870912 << 9 === 0. Actual: ' + (-536870912 << 9));
+}
+
+
+if (-1073741824 << 9 !== 0) {
+ $ERROR('#319: -1073741824 << 9 === 0. Actual: ' + (-1073741824 << 9));
+}
+
+
+if (-2147483648 << 9 !== 0) {
+ $ERROR('#320: -2147483648 << 9 === 0. Actual: ' + (-2147483648 << 9));
+}
+
+
+if (-1 << 10 !== -1024) {
+ $ERROR('#321: -1 << 10 === -1024. Actual: ' + (-1 << 10));
+}
+
+
+if (-2 << 10 !== -2048) {
+ $ERROR('#322: -2 << 10 === -2048. Actual: ' + (-2 << 10));
+}
+
+
+if (-4 << 10 !== -4096) {
+ $ERROR('#323: -4 << 10 === -4096. Actual: ' + (-4 << 10));
+}
+
+
+if (-8 << 10 !== -8192) {
+ $ERROR('#324: -8 << 10 === -8192. Actual: ' + (-8 << 10));
+}
+
+
+if (-16 << 10 !== -16384) {
+ $ERROR('#325: -16 << 10 === -16384. Actual: ' + (-16 << 10));
+}
+
+
+if (-32 << 10 !== -32768) {
+ $ERROR('#326: -32 << 10 === -32768. Actual: ' + (-32 << 10));
+}
+
+
+if (-64 << 10 !== -65536) {
+ $ERROR('#327: -64 << 10 === -65536. Actual: ' + (-64 << 10));
+}
+
+
+if (-128 << 10 !== -131072) {
+ $ERROR('#328: -128 << 10 === -131072. Actual: ' + (-128 << 10));
+}
+
+
+if (-256 << 10 !== -262144) {
+ $ERROR('#329: -256 << 10 === -262144. Actual: ' + (-256 << 10));
+}
+
+
+if (-512 << 10 !== -524288) {
+ $ERROR('#330: -512 << 10 === -524288. Actual: ' + (-512 << 10));
+}
+
+
+if (-1024 << 10 !== -1048576) {
+ $ERROR('#331: -1024 << 10 === -1048576. Actual: ' + (-1024 << 10));
+}
+
+
+if (-2048 << 10 !== -2097152) {
+ $ERROR('#332: -2048 << 10 === -2097152. Actual: ' + (-2048 << 10));
+}
+
+
+if (-4096 << 10 !== -4194304) {
+ $ERROR('#333: -4096 << 10 === -4194304. Actual: ' + (-4096 << 10));
+}
+
+
+if (-8192 << 10 !== -8388608) {
+ $ERROR('#334: -8192 << 10 === -8388608. Actual: ' + (-8192 << 10));
+}
+
+
+if (-16384 << 10 !== -16777216) {
+ $ERROR('#335: -16384 << 10 === -16777216. Actual: ' + (-16384 << 10));
+}
+
+
+if (-32768 << 10 !== -33554432) {
+ $ERROR('#336: -32768 << 10 === -33554432. Actual: ' + (-32768 << 10));
+}
+
+
+if (-65536 << 10 !== -67108864) {
+ $ERROR('#337: -65536 << 10 === -67108864. Actual: ' + (-65536 << 10));
+}
+
+
+if (-131072 << 10 !== -134217728) {
+ $ERROR('#338: -131072 << 10 === -134217728. Actual: ' + (-131072 << 10));
+}
+
+
+if (-262144 << 10 !== -268435456) {
+ $ERROR('#339: -262144 << 10 === -268435456. Actual: ' + (-262144 << 10));
+}
+
+
+if (-524288 << 10 !== -536870912) {
+ $ERROR('#340: -524288 << 10 === -536870912. Actual: ' + (-524288 << 10));
+}
+
+
+if (-1048576 << 10 !== -1073741824) {
+ $ERROR('#341: -1048576 << 10 === -1073741824. Actual: ' + (-1048576 << 10));
+}
+
+
+if (-2097152 << 10 !== -2147483648) {
+ $ERROR('#342: -2097152 << 10 === -2147483648. Actual: ' + (-2097152 << 10));
+}
+
+
+if (-4194304 << 10 !== 0) {
+ $ERROR('#343: -4194304 << 10 === 0. Actual: ' + (-4194304 << 10));
+}
+
+
+if (-8388608 << 10 !== 0) {
+ $ERROR('#344: -8388608 << 10 === 0. Actual: ' + (-8388608 << 10));
+}
+
+
+if (-16777216 << 10 !== 0) {
+ $ERROR('#345: -16777216 << 10 === 0. Actual: ' + (-16777216 << 10));
+}
+
+
+if (-33554432 << 10 !== 0) {
+ $ERROR('#346: -33554432 << 10 === 0. Actual: ' + (-33554432 << 10));
+}
+
+
+if (-67108864 << 10 !== 0) {
+ $ERROR('#347: -67108864 << 10 === 0. Actual: ' + (-67108864 << 10));
+}
+
+
+if (-134217728 << 10 !== 0) {
+ $ERROR('#348: -134217728 << 10 === 0. Actual: ' + (-134217728 << 10));
+}
+
+
+if (-268435456 << 10 !== 0) {
+ $ERROR('#349: -268435456 << 10 === 0. Actual: ' + (-268435456 << 10));
+}
+
+
+if (-536870912 << 10 !== 0) {
+ $ERROR('#350: -536870912 << 10 === 0. Actual: ' + (-536870912 << 10));
+}
+
+
+if (-1073741824 << 10 !== 0) {
+ $ERROR('#351: -1073741824 << 10 === 0. Actual: ' + (-1073741824 << 10));
+}
+
+
+if (-2147483648 << 10 !== 0) {
+ $ERROR('#352: -2147483648 << 10 === 0. Actual: ' + (-2147483648 << 10));
+}
+
+
+if (-1 << 11 !== -2048) {
+ $ERROR('#353: -1 << 11 === -2048. Actual: ' + (-1 << 11));
+}
+
+
+if (-2 << 11 !== -4096) {
+ $ERROR('#354: -2 << 11 === -4096. Actual: ' + (-2 << 11));
+}
+
+
+if (-4 << 11 !== -8192) {
+ $ERROR('#355: -4 << 11 === -8192. Actual: ' + (-4 << 11));
+}
+
+
+if (-8 << 11 !== -16384) {
+ $ERROR('#356: -8 << 11 === -16384. Actual: ' + (-8 << 11));
+}
+
+
+if (-16 << 11 !== -32768) {
+ $ERROR('#357: -16 << 11 === -32768. Actual: ' + (-16 << 11));
+}
+
+
+if (-32 << 11 !== -65536) {
+ $ERROR('#358: -32 << 11 === -65536. Actual: ' + (-32 << 11));
+}
+
+
+if (-64 << 11 !== -131072) {
+ $ERROR('#359: -64 << 11 === -131072. Actual: ' + (-64 << 11));
+}
+
+
+if (-128 << 11 !== -262144) {
+ $ERROR('#360: -128 << 11 === -262144. Actual: ' + (-128 << 11));
+}
+
+
+if (-256 << 11 !== -524288) {
+ $ERROR('#361: -256 << 11 === -524288. Actual: ' + (-256 << 11));
+}
+
+
+if (-512 << 11 !== -1048576) {
+ $ERROR('#362: -512 << 11 === -1048576. Actual: ' + (-512 << 11));
+}
+
+
+if (-1024 << 11 !== -2097152) {
+ $ERROR('#363: -1024 << 11 === -2097152. Actual: ' + (-1024 << 11));
+}
+
+
+if (-2048 << 11 !== -4194304) {
+ $ERROR('#364: -2048 << 11 === -4194304. Actual: ' + (-2048 << 11));
+}
+
+
+if (-4096 << 11 !== -8388608) {
+ $ERROR('#365: -4096 << 11 === -8388608. Actual: ' + (-4096 << 11));
+}
+
+
+if (-8192 << 11 !== -16777216) {
+ $ERROR('#366: -8192 << 11 === -16777216. Actual: ' + (-8192 << 11));
+}
+
+
+if (-16384 << 11 !== -33554432) {
+ $ERROR('#367: -16384 << 11 === -33554432. Actual: ' + (-16384 << 11));
+}
+
+
+if (-32768 << 11 !== -67108864) {
+ $ERROR('#368: -32768 << 11 === -67108864. Actual: ' + (-32768 << 11));
+}
+
+
+if (-65536 << 11 !== -134217728) {
+ $ERROR('#369: -65536 << 11 === -134217728. Actual: ' + (-65536 << 11));
+}
+
+
+if (-131072 << 11 !== -268435456) {
+ $ERROR('#370: -131072 << 11 === -268435456. Actual: ' + (-131072 << 11));
+}
+
+
+if (-262144 << 11 !== -536870912) {
+ $ERROR('#371: -262144 << 11 === -536870912. Actual: ' + (-262144 << 11));
+}
+
+
+if (-524288 << 11 !== -1073741824) {
+ $ERROR('#372: -524288 << 11 === -1073741824. Actual: ' + (-524288 << 11));
+}
+
+
+if (-1048576 << 11 !== -2147483648) {
+ $ERROR('#373: -1048576 << 11 === -2147483648. Actual: ' + (-1048576 << 11));
+}
+
+
+if (-2097152 << 11 !== 0) {
+ $ERROR('#374: -2097152 << 11 === 0. Actual: ' + (-2097152 << 11));
+}
+
+
+if (-4194304 << 11 !== 0) {
+ $ERROR('#375: -4194304 << 11 === 0. Actual: ' + (-4194304 << 11));
+}
+
+
+if (-8388608 << 11 !== 0) {
+ $ERROR('#376: -8388608 << 11 === 0. Actual: ' + (-8388608 << 11));
+}
+
+
+if (-16777216 << 11 !== 0) {
+ $ERROR('#377: -16777216 << 11 === 0. Actual: ' + (-16777216 << 11));
+}
+
+
+if (-33554432 << 11 !== 0) {
+ $ERROR('#378: -33554432 << 11 === 0. Actual: ' + (-33554432 << 11));
+}
+
+
+if (-67108864 << 11 !== 0) {
+ $ERROR('#379: -67108864 << 11 === 0. Actual: ' + (-67108864 << 11));
+}
+
+
+if (-134217728 << 11 !== 0) {
+ $ERROR('#380: -134217728 << 11 === 0. Actual: ' + (-134217728 << 11));
+}
+
+
+if (-268435456 << 11 !== 0) {
+ $ERROR('#381: -268435456 << 11 === 0. Actual: ' + (-268435456 << 11));
+}
+
+
+if (-536870912 << 11 !== 0) {
+ $ERROR('#382: -536870912 << 11 === 0. Actual: ' + (-536870912 << 11));
+}
+
+
+if (-1073741824 << 11 !== 0) {
+ $ERROR('#383: -1073741824 << 11 === 0. Actual: ' + (-1073741824 << 11));
+}
+
+
+if (-2147483648 << 11 !== 0) {
+ $ERROR('#384: -2147483648 << 11 === 0. Actual: ' + (-2147483648 << 11));
+}
+
+
+if (-1 << 12 !== -4096) {
+ $ERROR('#385: -1 << 12 === -4096. Actual: ' + (-1 << 12));
+}
+
+
+if (-2 << 12 !== -8192) {
+ $ERROR('#386: -2 << 12 === -8192. Actual: ' + (-2 << 12));
+}
+
+
+if (-4 << 12 !== -16384) {
+ $ERROR('#387: -4 << 12 === -16384. Actual: ' + (-4 << 12));
+}
+
+
+if (-8 << 12 !== -32768) {
+ $ERROR('#388: -8 << 12 === -32768. Actual: ' + (-8 << 12));
+}
+
+
+if (-16 << 12 !== -65536) {
+ $ERROR('#389: -16 << 12 === -65536. Actual: ' + (-16 << 12));
+}
+
+
+if (-32 << 12 !== -131072) {
+ $ERROR('#390: -32 << 12 === -131072. Actual: ' + (-32 << 12));
+}
+
+
+if (-64 << 12 !== -262144) {
+ $ERROR('#391: -64 << 12 === -262144. Actual: ' + (-64 << 12));
+}
+
+
+if (-128 << 12 !== -524288) {
+ $ERROR('#392: -128 << 12 === -524288. Actual: ' + (-128 << 12));
+}
+
+
+if (-256 << 12 !== -1048576) {
+ $ERROR('#393: -256 << 12 === -1048576. Actual: ' + (-256 << 12));
+}
+
+
+if (-512 << 12 !== -2097152) {
+ $ERROR('#394: -512 << 12 === -2097152. Actual: ' + (-512 << 12));
+}
+
+
+if (-1024 << 12 !== -4194304) {
+ $ERROR('#395: -1024 << 12 === -4194304. Actual: ' + (-1024 << 12));
+}
+
+
+if (-2048 << 12 !== -8388608) {
+ $ERROR('#396: -2048 << 12 === -8388608. Actual: ' + (-2048 << 12));
+}
+
+
+if (-4096 << 12 !== -16777216) {
+ $ERROR('#397: -4096 << 12 === -16777216. Actual: ' + (-4096 << 12));
+}
+
+
+if (-8192 << 12 !== -33554432) {
+ $ERROR('#398: -8192 << 12 === -33554432. Actual: ' + (-8192 << 12));
+}
+
+
+if (-16384 << 12 !== -67108864) {
+ $ERROR('#399: -16384 << 12 === -67108864. Actual: ' + (-16384 << 12));
+}
+
+
+if (-32768 << 12 !== -134217728) {
+ $ERROR('#400: -32768 << 12 === -134217728. Actual: ' + (-32768 << 12));
+}
+
+
+if (-65536 << 12 !== -268435456) {
+ $ERROR('#401: -65536 << 12 === -268435456. Actual: ' + (-65536 << 12));
+}
+
+
+if (-131072 << 12 !== -536870912) {
+ $ERROR('#402: -131072 << 12 === -536870912. Actual: ' + (-131072 << 12));
+}
+
+
+if (-262144 << 12 !== -1073741824) {
+ $ERROR('#403: -262144 << 12 === -1073741824. Actual: ' + (-262144 << 12));
+}
+
+
+if (-524288 << 12 !== -2147483648) {
+ $ERROR('#404: -524288 << 12 === -2147483648. Actual: ' + (-524288 << 12));
+}
+
+
+if (-1048576 << 12 !== 0) {
+ $ERROR('#405: -1048576 << 12 === 0. Actual: ' + (-1048576 << 12));
+}
+
+
+if (-2097152 << 12 !== 0) {
+ $ERROR('#406: -2097152 << 12 === 0. Actual: ' + (-2097152 << 12));
+}
+
+
+if (-4194304 << 12 !== 0) {
+ $ERROR('#407: -4194304 << 12 === 0. Actual: ' + (-4194304 << 12));
+}
+
+
+if (-8388608 << 12 !== 0) {
+ $ERROR('#408: -8388608 << 12 === 0. Actual: ' + (-8388608 << 12));
+}
+
+
+if (-16777216 << 12 !== 0) {
+ $ERROR('#409: -16777216 << 12 === 0. Actual: ' + (-16777216 << 12));
+}
+
+
+if (-33554432 << 12 !== 0) {
+ $ERROR('#410: -33554432 << 12 === 0. Actual: ' + (-33554432 << 12));
+}
+
+
+if (-67108864 << 12 !== 0) {
+ $ERROR('#411: -67108864 << 12 === 0. Actual: ' + (-67108864 << 12));
+}
+
+
+if (-134217728 << 12 !== 0) {
+ $ERROR('#412: -134217728 << 12 === 0. Actual: ' + (-134217728 << 12));
+}
+
+
+if (-268435456 << 12 !== 0) {
+ $ERROR('#413: -268435456 << 12 === 0. Actual: ' + (-268435456 << 12));
+}
+
+
+if (-536870912 << 12 !== 0) {
+ $ERROR('#414: -536870912 << 12 === 0. Actual: ' + (-536870912 << 12));
+}
+
+
+if (-1073741824 << 12 !== 0) {
+ $ERROR('#415: -1073741824 << 12 === 0. Actual: ' + (-1073741824 << 12));
+}
+
+
+if (-2147483648 << 12 !== 0) {
+ $ERROR('#416: -2147483648 << 12 === 0. Actual: ' + (-2147483648 << 12));
+}
+
+
+if (-1 << 13 !== -8192) {
+ $ERROR('#417: -1 << 13 === -8192. Actual: ' + (-1 << 13));
+}
+
+
+if (-2 << 13 !== -16384) {
+ $ERROR('#418: -2 << 13 === -16384. Actual: ' + (-2 << 13));
+}
+
+
+if (-4 << 13 !== -32768) {
+ $ERROR('#419: -4 << 13 === -32768. Actual: ' + (-4 << 13));
+}
+
+
+if (-8 << 13 !== -65536) {
+ $ERROR('#420: -8 << 13 === -65536. Actual: ' + (-8 << 13));
+}
+
+
+if (-16 << 13 !== -131072) {
+ $ERROR('#421: -16 << 13 === -131072. Actual: ' + (-16 << 13));
+}
+
+
+if (-32 << 13 !== -262144) {
+ $ERROR('#422: -32 << 13 === -262144. Actual: ' + (-32 << 13));
+}
+
+
+if (-64 << 13 !== -524288) {
+ $ERROR('#423: -64 << 13 === -524288. Actual: ' + (-64 << 13));
+}
+
+
+if (-128 << 13 !== -1048576) {
+ $ERROR('#424: -128 << 13 === -1048576. Actual: ' + (-128 << 13));
+}
+
+
+if (-256 << 13 !== -2097152) {
+ $ERROR('#425: -256 << 13 === -2097152. Actual: ' + (-256 << 13));
+}
+
+
+if (-512 << 13 !== -4194304) {
+ $ERROR('#426: -512 << 13 === -4194304. Actual: ' + (-512 << 13));
+}
+
+
+if (-1024 << 13 !== -8388608) {
+ $ERROR('#427: -1024 << 13 === -8388608. Actual: ' + (-1024 << 13));
+}
+
+
+if (-2048 << 13 !== -16777216) {
+ $ERROR('#428: -2048 << 13 === -16777216. Actual: ' + (-2048 << 13));
+}
+
+
+if (-4096 << 13 !== -33554432) {
+ $ERROR('#429: -4096 << 13 === -33554432. Actual: ' + (-4096 << 13));
+}
+
+
+if (-8192 << 13 !== -67108864) {
+ $ERROR('#430: -8192 << 13 === -67108864. Actual: ' + (-8192 << 13));
+}
+
+
+if (-16384 << 13 !== -134217728) {
+ $ERROR('#431: -16384 << 13 === -134217728. Actual: ' + (-16384 << 13));
+}
+
+
+if (-32768 << 13 !== -268435456) {
+ $ERROR('#432: -32768 << 13 === -268435456. Actual: ' + (-32768 << 13));
+}
+
+
+if (-65536 << 13 !== -536870912) {
+ $ERROR('#433: -65536 << 13 === -536870912. Actual: ' + (-65536 << 13));
+}
+
+
+if (-131072 << 13 !== -1073741824) {
+ $ERROR('#434: -131072 << 13 === -1073741824. Actual: ' + (-131072 << 13));
+}
+
+
+if (-262144 << 13 !== -2147483648) {
+ $ERROR('#435: -262144 << 13 === -2147483648. Actual: ' + (-262144 << 13));
+}
+
+
+if (-524288 << 13 !== 0) {
+ $ERROR('#436: -524288 << 13 === 0. Actual: ' + (-524288 << 13));
+}
+
+
+if (-1048576 << 13 !== 0) {
+ $ERROR('#437: -1048576 << 13 === 0. Actual: ' + (-1048576 << 13));
+}
+
+
+if (-2097152 << 13 !== 0) {
+ $ERROR('#438: -2097152 << 13 === 0. Actual: ' + (-2097152 << 13));
+}
+
+
+if (-4194304 << 13 !== 0) {
+ $ERROR('#439: -4194304 << 13 === 0. Actual: ' + (-4194304 << 13));
+}
+
+
+if (-8388608 << 13 !== 0) {
+ $ERROR('#440: -8388608 << 13 === 0. Actual: ' + (-8388608 << 13));
+}
+
+
+if (-16777216 << 13 !== 0) {
+ $ERROR('#441: -16777216 << 13 === 0. Actual: ' + (-16777216 << 13));
+}
+
+
+if (-33554432 << 13 !== 0) {
+ $ERROR('#442: -33554432 << 13 === 0. Actual: ' + (-33554432 << 13));
+}
+
+
+if (-67108864 << 13 !== 0) {
+ $ERROR('#443: -67108864 << 13 === 0. Actual: ' + (-67108864 << 13));
+}
+
+
+if (-134217728 << 13 !== 0) {
+ $ERROR('#444: -134217728 << 13 === 0. Actual: ' + (-134217728 << 13));
+}
+
+
+if (-268435456 << 13 !== 0) {
+ $ERROR('#445: -268435456 << 13 === 0. Actual: ' + (-268435456 << 13));
+}
+
+
+if (-536870912 << 13 !== 0) {
+ $ERROR('#446: -536870912 << 13 === 0. Actual: ' + (-536870912 << 13));
+}
+
+
+if (-1073741824 << 13 !== 0) {
+ $ERROR('#447: -1073741824 << 13 === 0. Actual: ' + (-1073741824 << 13));
+}
+
+
+if (-2147483648 << 13 !== 0) {
+ $ERROR('#448: -2147483648 << 13 === 0. Actual: ' + (-2147483648 << 13));
+}
+
+
+if (-1 << 14 !== -16384) {
+ $ERROR('#449: -1 << 14 === -16384. Actual: ' + (-1 << 14));
+}
+
+
+if (-2 << 14 !== -32768) {
+ $ERROR('#450: -2 << 14 === -32768. Actual: ' + (-2 << 14));
+}
+
+
+if (-4 << 14 !== -65536) {
+ $ERROR('#451: -4 << 14 === -65536. Actual: ' + (-4 << 14));
+}
+
+
+if (-8 << 14 !== -131072) {
+ $ERROR('#452: -8 << 14 === -131072. Actual: ' + (-8 << 14));
+}
+
+
+if (-16 << 14 !== -262144) {
+ $ERROR('#453: -16 << 14 === -262144. Actual: ' + (-16 << 14));
+}
+
+
+if (-32 << 14 !== -524288) {
+ $ERROR('#454: -32 << 14 === -524288. Actual: ' + (-32 << 14));
+}
+
+
+if (-64 << 14 !== -1048576) {
+ $ERROR('#455: -64 << 14 === -1048576. Actual: ' + (-64 << 14));
+}
+
+
+if (-128 << 14 !== -2097152) {
+ $ERROR('#456: -128 << 14 === -2097152. Actual: ' + (-128 << 14));
+}
+
+
+if (-256 << 14 !== -4194304) {
+ $ERROR('#457: -256 << 14 === -4194304. Actual: ' + (-256 << 14));
+}
+
+
+if (-512 << 14 !== -8388608) {
+ $ERROR('#458: -512 << 14 === -8388608. Actual: ' + (-512 << 14));
+}
+
+
+if (-1024 << 14 !== -16777216) {
+ $ERROR('#459: -1024 << 14 === -16777216. Actual: ' + (-1024 << 14));
+}
+
+
+if (-2048 << 14 !== -33554432) {
+ $ERROR('#460: -2048 << 14 === -33554432. Actual: ' + (-2048 << 14));
+}
+
+
+if (-4096 << 14 !== -67108864) {
+ $ERROR('#461: -4096 << 14 === -67108864. Actual: ' + (-4096 << 14));
+}
+
+
+if (-8192 << 14 !== -134217728) {
+ $ERROR('#462: -8192 << 14 === -134217728. Actual: ' + (-8192 << 14));
+}
+
+
+if (-16384 << 14 !== -268435456) {
+ $ERROR('#463: -16384 << 14 === -268435456. Actual: ' + (-16384 << 14));
+}
+
+
+if (-32768 << 14 !== -536870912) {
+ $ERROR('#464: -32768 << 14 === -536870912. Actual: ' + (-32768 << 14));
+}
+
+
+if (-65536 << 14 !== -1073741824) {
+ $ERROR('#465: -65536 << 14 === -1073741824. Actual: ' + (-65536 << 14));
+}
+
+
+if (-131072 << 14 !== -2147483648) {
+ $ERROR('#466: -131072 << 14 === -2147483648. Actual: ' + (-131072 << 14));
+}
+
+
+if (-262144 << 14 !== 0) {
+ $ERROR('#467: -262144 << 14 === 0. Actual: ' + (-262144 << 14));
+}
+
+
+if (-524288 << 14 !== 0) {
+ $ERROR('#468: -524288 << 14 === 0. Actual: ' + (-524288 << 14));
+}
+
+
+if (-1048576 << 14 !== 0) {
+ $ERROR('#469: -1048576 << 14 === 0. Actual: ' + (-1048576 << 14));
+}
+
+
+if (-2097152 << 14 !== 0) {
+ $ERROR('#470: -2097152 << 14 === 0. Actual: ' + (-2097152 << 14));
+}
+
+
+if (-4194304 << 14 !== 0) {
+ $ERROR('#471: -4194304 << 14 === 0. Actual: ' + (-4194304 << 14));
+}
+
+
+if (-8388608 << 14 !== 0) {
+ $ERROR('#472: -8388608 << 14 === 0. Actual: ' + (-8388608 << 14));
+}
+
+
+if (-16777216 << 14 !== 0) {
+ $ERROR('#473: -16777216 << 14 === 0. Actual: ' + (-16777216 << 14));
+}
+
+
+if (-33554432 << 14 !== 0) {
+ $ERROR('#474: -33554432 << 14 === 0. Actual: ' + (-33554432 << 14));
+}
+
+
+if (-67108864 << 14 !== 0) {
+ $ERROR('#475: -67108864 << 14 === 0. Actual: ' + (-67108864 << 14));
+}
+
+
+if (-134217728 << 14 !== 0) {
+ $ERROR('#476: -134217728 << 14 === 0. Actual: ' + (-134217728 << 14));
+}
+
+
+if (-268435456 << 14 !== 0) {
+ $ERROR('#477: -268435456 << 14 === 0. Actual: ' + (-268435456 << 14));
+}
+
+
+if (-536870912 << 14 !== 0) {
+ $ERROR('#478: -536870912 << 14 === 0. Actual: ' + (-536870912 << 14));
+}
+
+
+if (-1073741824 << 14 !== 0) {
+ $ERROR('#479: -1073741824 << 14 === 0. Actual: ' + (-1073741824 << 14));
+}
+
+
+if (-2147483648 << 14 !== 0) {
+ $ERROR('#480: -2147483648 << 14 === 0. Actual: ' + (-2147483648 << 14));
+}
+
+
+if (-1 << 15 !== -32768) {
+ $ERROR('#481: -1 << 15 === -32768. Actual: ' + (-1 << 15));
+}
+
+
+if (-2 << 15 !== -65536) {
+ $ERROR('#482: -2 << 15 === -65536. Actual: ' + (-2 << 15));
+}
+
+
+if (-4 << 15 !== -131072) {
+ $ERROR('#483: -4 << 15 === -131072. Actual: ' + (-4 << 15));
+}
+
+
+if (-8 << 15 !== -262144) {
+ $ERROR('#484: -8 << 15 === -262144. Actual: ' + (-8 << 15));
+}
+
+
+if (-16 << 15 !== -524288) {
+ $ERROR('#485: -16 << 15 === -524288. Actual: ' + (-16 << 15));
+}
+
+
+if (-32 << 15 !== -1048576) {
+ $ERROR('#486: -32 << 15 === -1048576. Actual: ' + (-32 << 15));
+}
+
+
+if (-64 << 15 !== -2097152) {
+ $ERROR('#487: -64 << 15 === -2097152. Actual: ' + (-64 << 15));
+}
+
+
+if (-128 << 15 !== -4194304) {
+ $ERROR('#488: -128 << 15 === -4194304. Actual: ' + (-128 << 15));
+}
+
+
+if (-256 << 15 !== -8388608) {
+ $ERROR('#489: -256 << 15 === -8388608. Actual: ' + (-256 << 15));
+}
+
+
+if (-512 << 15 !== -16777216) {
+ $ERROR('#490: -512 << 15 === -16777216. Actual: ' + (-512 << 15));
+}
+
+
+if (-1024 << 15 !== -33554432) {
+ $ERROR('#491: -1024 << 15 === -33554432. Actual: ' + (-1024 << 15));
+}
+
+
+if (-2048 << 15 !== -67108864) {
+ $ERROR('#492: -2048 << 15 === -67108864. Actual: ' + (-2048 << 15));
+}
+
+
+if (-4096 << 15 !== -134217728) {
+ $ERROR('#493: -4096 << 15 === -134217728. Actual: ' + (-4096 << 15));
+}
+
+
+if (-8192 << 15 !== -268435456) {
+ $ERROR('#494: -8192 << 15 === -268435456. Actual: ' + (-8192 << 15));
+}
+
+
+if (-16384 << 15 !== -536870912) {
+ $ERROR('#495: -16384 << 15 === -536870912. Actual: ' + (-16384 << 15));
+}
+
+
+if (-32768 << 15 !== -1073741824) {
+ $ERROR('#496: -32768 << 15 === -1073741824. Actual: ' + (-32768 << 15));
+}
+
+
+if (-65536 << 15 !== -2147483648) {
+ $ERROR('#497: -65536 << 15 === -2147483648. Actual: ' + (-65536 << 15));
+}
+
+
+if (-131072 << 15 !== 0) {
+ $ERROR('#498: -131072 << 15 === 0. Actual: ' + (-131072 << 15));
+}
+
+
+if (-262144 << 15 !== 0) {
+ $ERROR('#499: -262144 << 15 === 0. Actual: ' + (-262144 << 15));
+}
+
+
+if (-524288 << 15 !== 0) {
+ $ERROR('#500: -524288 << 15 === 0. Actual: ' + (-524288 << 15));
+}
+
+
+if (-1048576 << 15 !== 0) {
+ $ERROR('#501: -1048576 << 15 === 0. Actual: ' + (-1048576 << 15));
+}
+
+
+if (-2097152 << 15 !== 0) {
+ $ERROR('#502: -2097152 << 15 === 0. Actual: ' + (-2097152 << 15));
+}
+
+
+if (-4194304 << 15 !== 0) {
+ $ERROR('#503: -4194304 << 15 === 0. Actual: ' + (-4194304 << 15));
+}
+
+
+if (-8388608 << 15 !== 0) {
+ $ERROR('#504: -8388608 << 15 === 0. Actual: ' + (-8388608 << 15));
+}
+
+
+if (-16777216 << 15 !== 0) {
+ $ERROR('#505: -16777216 << 15 === 0. Actual: ' + (-16777216 << 15));
+}
+
+
+if (-33554432 << 15 !== 0) {
+ $ERROR('#506: -33554432 << 15 === 0. Actual: ' + (-33554432 << 15));
+}
+
+
+if (-67108864 << 15 !== 0) {
+ $ERROR('#507: -67108864 << 15 === 0. Actual: ' + (-67108864 << 15));
+}
+
+
+if (-134217728 << 15 !== 0) {
+ $ERROR('#508: -134217728 << 15 === 0. Actual: ' + (-134217728 << 15));
+}
+
+
+if (-268435456 << 15 !== 0) {
+ $ERROR('#509: -268435456 << 15 === 0. Actual: ' + (-268435456 << 15));
+}
+
+
+if (-536870912 << 15 !== 0) {
+ $ERROR('#510: -536870912 << 15 === 0. Actual: ' + (-536870912 << 15));
+}
+
+
+if (-1073741824 << 15 !== 0) {
+ $ERROR('#511: -1073741824 << 15 === 0. Actual: ' + (-1073741824 << 15));
+}
+
+
+if (-2147483648 << 15 !== 0) {
+ $ERROR('#512: -2147483648 << 15 === 0. Actual: ' + (-2147483648 << 15));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T2.js
new file mode 100644
index 000000000..373dc5cbf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T2.js
@@ -0,0 +1,2571 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A4_T2;
+ * @section: 11.7.1;
+ * @assertion: Check operator x << y in distinct points;
+ * @description: ShiftExpression = 2^n - 1, n = 16...31;
+ */
+
+//CHECK
+
+if (-1 << 16 !== -65536) {
+ $ERROR('#513: -1 << 16 === -65536. Actual: ' + (-1 << 16));
+}
+
+
+if (-2 << 16 !== -131072) {
+ $ERROR('#514: -2 << 16 === -131072. Actual: ' + (-2 << 16));
+}
+
+
+if (-4 << 16 !== -262144) {
+ $ERROR('#515: -4 << 16 === -262144. Actual: ' + (-4 << 16));
+}
+
+
+if (-8 << 16 !== -524288) {
+ $ERROR('#516: -8 << 16 === -524288. Actual: ' + (-8 << 16));
+}
+
+
+if (-16 << 16 !== -1048576) {
+ $ERROR('#517: -16 << 16 === -1048576. Actual: ' + (-16 << 16));
+}
+
+
+if (-32 << 16 !== -2097152) {
+ $ERROR('#518: -32 << 16 === -2097152. Actual: ' + (-32 << 16));
+}
+
+
+if (-64 << 16 !== -4194304) {
+ $ERROR('#519: -64 << 16 === -4194304. Actual: ' + (-64 << 16));
+}
+
+
+if (-128 << 16 !== -8388608) {
+ $ERROR('#520: -128 << 16 === -8388608. Actual: ' + (-128 << 16));
+}
+
+
+if (-256 << 16 !== -16777216) {
+ $ERROR('#521: -256 << 16 === -16777216. Actual: ' + (-256 << 16));
+}
+
+
+if (-512 << 16 !== -33554432) {
+ $ERROR('#522: -512 << 16 === -33554432. Actual: ' + (-512 << 16));
+}
+
+
+if (-1024 << 16 !== -67108864) {
+ $ERROR('#523: -1024 << 16 === -67108864. Actual: ' + (-1024 << 16));
+}
+
+
+if (-2048 << 16 !== -134217728) {
+ $ERROR('#524: -2048 << 16 === -134217728. Actual: ' + (-2048 << 16));
+}
+
+
+if (-4096 << 16 !== -268435456) {
+ $ERROR('#525: -4096 << 16 === -268435456. Actual: ' + (-4096 << 16));
+}
+
+
+if (-8192 << 16 !== -536870912) {
+ $ERROR('#526: -8192 << 16 === -536870912. Actual: ' + (-8192 << 16));
+}
+
+
+if (-16384 << 16 !== -1073741824) {
+ $ERROR('#527: -16384 << 16 === -1073741824. Actual: ' + (-16384 << 16));
+}
+
+
+if (-32768 << 16 !== -2147483648) {
+ $ERROR('#528: -32768 << 16 === -2147483648. Actual: ' + (-32768 << 16));
+}
+
+
+if (-65536 << 16 !== 0) {
+ $ERROR('#529: -65536 << 16 === 0. Actual: ' + (-65536 << 16));
+}
+
+
+if (-131072 << 16 !== 0) {
+ $ERROR('#530: -131072 << 16 === 0. Actual: ' + (-131072 << 16));
+}
+
+
+if (-262144 << 16 !== 0) {
+ $ERROR('#531: -262144 << 16 === 0. Actual: ' + (-262144 << 16));
+}
+
+
+if (-524288 << 16 !== 0) {
+ $ERROR('#532: -524288 << 16 === 0. Actual: ' + (-524288 << 16));
+}
+
+
+if (-1048576 << 16 !== 0) {
+ $ERROR('#533: -1048576 << 16 === 0. Actual: ' + (-1048576 << 16));
+}
+
+
+if (-2097152 << 16 !== 0) {
+ $ERROR('#534: -2097152 << 16 === 0. Actual: ' + (-2097152 << 16));
+}
+
+
+if (-4194304 << 16 !== 0) {
+ $ERROR('#535: -4194304 << 16 === 0. Actual: ' + (-4194304 << 16));
+}
+
+
+if (-8388608 << 16 !== 0) {
+ $ERROR('#536: -8388608 << 16 === 0. Actual: ' + (-8388608 << 16));
+}
+
+
+if (-16777216 << 16 !== 0) {
+ $ERROR('#537: -16777216 << 16 === 0. Actual: ' + (-16777216 << 16));
+}
+
+
+if (-33554432 << 16 !== 0) {
+ $ERROR('#538: -33554432 << 16 === 0. Actual: ' + (-33554432 << 16));
+}
+
+
+if (-67108864 << 16 !== 0) {
+ $ERROR('#539: -67108864 << 16 === 0. Actual: ' + (-67108864 << 16));
+}
+
+
+if (-134217728 << 16 !== 0) {
+ $ERROR('#540: -134217728 << 16 === 0. Actual: ' + (-134217728 << 16));
+}
+
+
+if (-268435456 << 16 !== 0) {
+ $ERROR('#541: -268435456 << 16 === 0. Actual: ' + (-268435456 << 16));
+}
+
+
+if (-536870912 << 16 !== 0) {
+ $ERROR('#542: -536870912 << 16 === 0. Actual: ' + (-536870912 << 16));
+}
+
+
+if (-1073741824 << 16 !== 0) {
+ $ERROR('#543: -1073741824 << 16 === 0. Actual: ' + (-1073741824 << 16));
+}
+
+
+if (-2147483648 << 16 !== 0) {
+ $ERROR('#544: -2147483648 << 16 === 0. Actual: ' + (-2147483648 << 16));
+}
+
+
+if (-1 << 17 !== -131072) {
+ $ERROR('#545: -1 << 17 === -131072. Actual: ' + (-1 << 17));
+}
+
+
+if (-2 << 17 !== -262144) {
+ $ERROR('#546: -2 << 17 === -262144. Actual: ' + (-2 << 17));
+}
+
+
+if (-4 << 17 !== -524288) {
+ $ERROR('#547: -4 << 17 === -524288. Actual: ' + (-4 << 17));
+}
+
+
+if (-8 << 17 !== -1048576) {
+ $ERROR('#548: -8 << 17 === -1048576. Actual: ' + (-8 << 17));
+}
+
+
+if (-16 << 17 !== -2097152) {
+ $ERROR('#549: -16 << 17 === -2097152. Actual: ' + (-16 << 17));
+}
+
+
+if (-32 << 17 !== -4194304) {
+ $ERROR('#550: -32 << 17 === -4194304. Actual: ' + (-32 << 17));
+}
+
+
+if (-64 << 17 !== -8388608) {
+ $ERROR('#551: -64 << 17 === -8388608. Actual: ' + (-64 << 17));
+}
+
+
+if (-128 << 17 !== -16777216) {
+ $ERROR('#552: -128 << 17 === -16777216. Actual: ' + (-128 << 17));
+}
+
+
+if (-256 << 17 !== -33554432) {
+ $ERROR('#553: -256 << 17 === -33554432. Actual: ' + (-256 << 17));
+}
+
+
+if (-512 << 17 !== -67108864) {
+ $ERROR('#554: -512 << 17 === -67108864. Actual: ' + (-512 << 17));
+}
+
+
+if (-1024 << 17 !== -134217728) {
+ $ERROR('#555: -1024 << 17 === -134217728. Actual: ' + (-1024 << 17));
+}
+
+
+if (-2048 << 17 !== -268435456) {
+ $ERROR('#556: -2048 << 17 === -268435456. Actual: ' + (-2048 << 17));
+}
+
+
+if (-4096 << 17 !== -536870912) {
+ $ERROR('#557: -4096 << 17 === -536870912. Actual: ' + (-4096 << 17));
+}
+
+
+if (-8192 << 17 !== -1073741824) {
+ $ERROR('#558: -8192 << 17 === -1073741824. Actual: ' + (-8192 << 17));
+}
+
+
+if (-16384 << 17 !== -2147483648) {
+ $ERROR('#559: -16384 << 17 === -2147483648. Actual: ' + (-16384 << 17));
+}
+
+
+if (-32768 << 17 !== 0) {
+ $ERROR('#560: -32768 << 17 === 0. Actual: ' + (-32768 << 17));
+}
+
+
+if (-65536 << 17 !== 0) {
+ $ERROR('#561: -65536 << 17 === 0. Actual: ' + (-65536 << 17));
+}
+
+
+if (-131072 << 17 !== 0) {
+ $ERROR('#562: -131072 << 17 === 0. Actual: ' + (-131072 << 17));
+}
+
+
+if (-262144 << 17 !== 0) {
+ $ERROR('#563: -262144 << 17 === 0. Actual: ' + (-262144 << 17));
+}
+
+
+if (-524288 << 17 !== 0) {
+ $ERROR('#564: -524288 << 17 === 0. Actual: ' + (-524288 << 17));
+}
+
+
+if (-1048576 << 17 !== 0) {
+ $ERROR('#565: -1048576 << 17 === 0. Actual: ' + (-1048576 << 17));
+}
+
+
+if (-2097152 << 17 !== 0) {
+ $ERROR('#566: -2097152 << 17 === 0. Actual: ' + (-2097152 << 17));
+}
+
+
+if (-4194304 << 17 !== 0) {
+ $ERROR('#567: -4194304 << 17 === 0. Actual: ' + (-4194304 << 17));
+}
+
+
+if (-8388608 << 17 !== 0) {
+ $ERROR('#568: -8388608 << 17 === 0. Actual: ' + (-8388608 << 17));
+}
+
+
+if (-16777216 << 17 !== 0) {
+ $ERROR('#569: -16777216 << 17 === 0. Actual: ' + (-16777216 << 17));
+}
+
+
+if (-33554432 << 17 !== 0) {
+ $ERROR('#570: -33554432 << 17 === 0. Actual: ' + (-33554432 << 17));
+}
+
+
+if (-67108864 << 17 !== 0) {
+ $ERROR('#571: -67108864 << 17 === 0. Actual: ' + (-67108864 << 17));
+}
+
+
+if (-134217728 << 17 !== 0) {
+ $ERROR('#572: -134217728 << 17 === 0. Actual: ' + (-134217728 << 17));
+}
+
+
+if (-268435456 << 17 !== 0) {
+ $ERROR('#573: -268435456 << 17 === 0. Actual: ' + (-268435456 << 17));
+}
+
+
+if (-536870912 << 17 !== 0) {
+ $ERROR('#574: -536870912 << 17 === 0. Actual: ' + (-536870912 << 17));
+}
+
+
+if (-1073741824 << 17 !== 0) {
+ $ERROR('#575: -1073741824 << 17 === 0. Actual: ' + (-1073741824 << 17));
+}
+
+
+if (-2147483648 << 17 !== 0) {
+ $ERROR('#576: -2147483648 << 17 === 0. Actual: ' + (-2147483648 << 17));
+}
+
+
+if (-1 << 18 !== -262144) {
+ $ERROR('#577: -1 << 18 === -262144. Actual: ' + (-1 << 18));
+}
+
+
+if (-2 << 18 !== -524288) {
+ $ERROR('#578: -2 << 18 === -524288. Actual: ' + (-2 << 18));
+}
+
+
+if (-4 << 18 !== -1048576) {
+ $ERROR('#579: -4 << 18 === -1048576. Actual: ' + (-4 << 18));
+}
+
+
+if (-8 << 18 !== -2097152) {
+ $ERROR('#580: -8 << 18 === -2097152. Actual: ' + (-8 << 18));
+}
+
+
+if (-16 << 18 !== -4194304) {
+ $ERROR('#581: -16 << 18 === -4194304. Actual: ' + (-16 << 18));
+}
+
+
+if (-32 << 18 !== -8388608) {
+ $ERROR('#582: -32 << 18 === -8388608. Actual: ' + (-32 << 18));
+}
+
+
+if (-64 << 18 !== -16777216) {
+ $ERROR('#583: -64 << 18 === -16777216. Actual: ' + (-64 << 18));
+}
+
+
+if (-128 << 18 !== -33554432) {
+ $ERROR('#584: -128 << 18 === -33554432. Actual: ' + (-128 << 18));
+}
+
+
+if (-256 << 18 !== -67108864) {
+ $ERROR('#585: -256 << 18 === -67108864. Actual: ' + (-256 << 18));
+}
+
+
+if (-512 << 18 !== -134217728) {
+ $ERROR('#586: -512 << 18 === -134217728. Actual: ' + (-512 << 18));
+}
+
+
+if (-1024 << 18 !== -268435456) {
+ $ERROR('#587: -1024 << 18 === -268435456. Actual: ' + (-1024 << 18));
+}
+
+
+if (-2048 << 18 !== -536870912) {
+ $ERROR('#588: -2048 << 18 === -536870912. Actual: ' + (-2048 << 18));
+}
+
+
+if (-4096 << 18 !== -1073741824) {
+ $ERROR('#589: -4096 << 18 === -1073741824. Actual: ' + (-4096 << 18));
+}
+
+
+if (-8192 << 18 !== -2147483648) {
+ $ERROR('#590: -8192 << 18 === -2147483648. Actual: ' + (-8192 << 18));
+}
+
+
+if (-16384 << 18 !== 0) {
+ $ERROR('#591: -16384 << 18 === 0. Actual: ' + (-16384 << 18));
+}
+
+
+if (-32768 << 18 !== 0) {
+ $ERROR('#592: -32768 << 18 === 0. Actual: ' + (-32768 << 18));
+}
+
+
+if (-65536 << 18 !== 0) {
+ $ERROR('#593: -65536 << 18 === 0. Actual: ' + (-65536 << 18));
+}
+
+
+if (-131072 << 18 !== 0) {
+ $ERROR('#594: -131072 << 18 === 0. Actual: ' + (-131072 << 18));
+}
+
+
+if (-262144 << 18 !== 0) {
+ $ERROR('#595: -262144 << 18 === 0. Actual: ' + (-262144 << 18));
+}
+
+
+if (-524288 << 18 !== 0) {
+ $ERROR('#596: -524288 << 18 === 0. Actual: ' + (-524288 << 18));
+}
+
+
+if (-1048576 << 18 !== 0) {
+ $ERROR('#597: -1048576 << 18 === 0. Actual: ' + (-1048576 << 18));
+}
+
+
+if (-2097152 << 18 !== 0) {
+ $ERROR('#598: -2097152 << 18 === 0. Actual: ' + (-2097152 << 18));
+}
+
+
+if (-4194304 << 18 !== 0) {
+ $ERROR('#599: -4194304 << 18 === 0. Actual: ' + (-4194304 << 18));
+}
+
+
+if (-8388608 << 18 !== 0) {
+ $ERROR('#600: -8388608 << 18 === 0. Actual: ' + (-8388608 << 18));
+}
+
+
+if (-16777216 << 18 !== 0) {
+ $ERROR('#601: -16777216 << 18 === 0. Actual: ' + (-16777216 << 18));
+}
+
+
+if (-33554432 << 18 !== 0) {
+ $ERROR('#602: -33554432 << 18 === 0. Actual: ' + (-33554432 << 18));
+}
+
+
+if (-67108864 << 18 !== 0) {
+ $ERROR('#603: -67108864 << 18 === 0. Actual: ' + (-67108864 << 18));
+}
+
+
+if (-134217728 << 18 !== 0) {
+ $ERROR('#604: -134217728 << 18 === 0. Actual: ' + (-134217728 << 18));
+}
+
+
+if (-268435456 << 18 !== 0) {
+ $ERROR('#605: -268435456 << 18 === 0. Actual: ' + (-268435456 << 18));
+}
+
+
+if (-536870912 << 18 !== 0) {
+ $ERROR('#606: -536870912 << 18 === 0. Actual: ' + (-536870912 << 18));
+}
+
+
+if (-1073741824 << 18 !== 0) {
+ $ERROR('#607: -1073741824 << 18 === 0. Actual: ' + (-1073741824 << 18));
+}
+
+
+if (-2147483648 << 18 !== 0) {
+ $ERROR('#608: -2147483648 << 18 === 0. Actual: ' + (-2147483648 << 18));
+}
+
+
+if (-1 << 19 !== -524288) {
+ $ERROR('#609: -1 << 19 === -524288. Actual: ' + (-1 << 19));
+}
+
+
+if (-2 << 19 !== -1048576) {
+ $ERROR('#610: -2 << 19 === -1048576. Actual: ' + (-2 << 19));
+}
+
+
+if (-4 << 19 !== -2097152) {
+ $ERROR('#611: -4 << 19 === -2097152. Actual: ' + (-4 << 19));
+}
+
+
+if (-8 << 19 !== -4194304) {
+ $ERROR('#612: -8 << 19 === -4194304. Actual: ' + (-8 << 19));
+}
+
+
+if (-16 << 19 !== -8388608) {
+ $ERROR('#613: -16 << 19 === -8388608. Actual: ' + (-16 << 19));
+}
+
+
+if (-32 << 19 !== -16777216) {
+ $ERROR('#614: -32 << 19 === -16777216. Actual: ' + (-32 << 19));
+}
+
+
+if (-64 << 19 !== -33554432) {
+ $ERROR('#615: -64 << 19 === -33554432. Actual: ' + (-64 << 19));
+}
+
+
+if (-128 << 19 !== -67108864) {
+ $ERROR('#616: -128 << 19 === -67108864. Actual: ' + (-128 << 19));
+}
+
+
+if (-256 << 19 !== -134217728) {
+ $ERROR('#617: -256 << 19 === -134217728. Actual: ' + (-256 << 19));
+}
+
+
+if (-512 << 19 !== -268435456) {
+ $ERROR('#618: -512 << 19 === -268435456. Actual: ' + (-512 << 19));
+}
+
+
+if (-1024 << 19 !== -536870912) {
+ $ERROR('#619: -1024 << 19 === -536870912. Actual: ' + (-1024 << 19));
+}
+
+
+if (-2048 << 19 !== -1073741824) {
+ $ERROR('#620: -2048 << 19 === -1073741824. Actual: ' + (-2048 << 19));
+}
+
+
+if (-4096 << 19 !== -2147483648) {
+ $ERROR('#621: -4096 << 19 === -2147483648. Actual: ' + (-4096 << 19));
+}
+
+
+if (-8192 << 19 !== 0) {
+ $ERROR('#622: -8192 << 19 === 0. Actual: ' + (-8192 << 19));
+}
+
+
+if (-16384 << 19 !== 0) {
+ $ERROR('#623: -16384 << 19 === 0. Actual: ' + (-16384 << 19));
+}
+
+
+if (-32768 << 19 !== 0) {
+ $ERROR('#624: -32768 << 19 === 0. Actual: ' + (-32768 << 19));
+}
+
+
+if (-65536 << 19 !== 0) {
+ $ERROR('#625: -65536 << 19 === 0. Actual: ' + (-65536 << 19));
+}
+
+
+if (-131072 << 19 !== 0) {
+ $ERROR('#626: -131072 << 19 === 0. Actual: ' + (-131072 << 19));
+}
+
+
+if (-262144 << 19 !== 0) {
+ $ERROR('#627: -262144 << 19 === 0. Actual: ' + (-262144 << 19));
+}
+
+
+if (-524288 << 19 !== 0) {
+ $ERROR('#628: -524288 << 19 === 0. Actual: ' + (-524288 << 19));
+}
+
+
+if (-1048576 << 19 !== 0) {
+ $ERROR('#629: -1048576 << 19 === 0. Actual: ' + (-1048576 << 19));
+}
+
+
+if (-2097152 << 19 !== 0) {
+ $ERROR('#630: -2097152 << 19 === 0. Actual: ' + (-2097152 << 19));
+}
+
+
+if (-4194304 << 19 !== 0) {
+ $ERROR('#631: -4194304 << 19 === 0. Actual: ' + (-4194304 << 19));
+}
+
+
+if (-8388608 << 19 !== 0) {
+ $ERROR('#632: -8388608 << 19 === 0. Actual: ' + (-8388608 << 19));
+}
+
+
+if (-16777216 << 19 !== 0) {
+ $ERROR('#633: -16777216 << 19 === 0. Actual: ' + (-16777216 << 19));
+}
+
+
+if (-33554432 << 19 !== 0) {
+ $ERROR('#634: -33554432 << 19 === 0. Actual: ' + (-33554432 << 19));
+}
+
+
+if (-67108864 << 19 !== 0) {
+ $ERROR('#635: -67108864 << 19 === 0. Actual: ' + (-67108864 << 19));
+}
+
+
+if (-134217728 << 19 !== 0) {
+ $ERROR('#636: -134217728 << 19 === 0. Actual: ' + (-134217728 << 19));
+}
+
+
+if (-268435456 << 19 !== 0) {
+ $ERROR('#637: -268435456 << 19 === 0. Actual: ' + (-268435456 << 19));
+}
+
+
+if (-536870912 << 19 !== 0) {
+ $ERROR('#638: -536870912 << 19 === 0. Actual: ' + (-536870912 << 19));
+}
+
+
+if (-1073741824 << 19 !== 0) {
+ $ERROR('#639: -1073741824 << 19 === 0. Actual: ' + (-1073741824 << 19));
+}
+
+
+if (-2147483648 << 19 !== 0) {
+ $ERROR('#640: -2147483648 << 19 === 0. Actual: ' + (-2147483648 << 19));
+}
+
+
+if (-1 << 20 !== -1048576) {
+ $ERROR('#641: -1 << 20 === -1048576. Actual: ' + (-1 << 20));
+}
+
+
+if (-2 << 20 !== -2097152) {
+ $ERROR('#642: -2 << 20 === -2097152. Actual: ' + (-2 << 20));
+}
+
+
+if (-4 << 20 !== -4194304) {
+ $ERROR('#643: -4 << 20 === -4194304. Actual: ' + (-4 << 20));
+}
+
+
+if (-8 << 20 !== -8388608) {
+ $ERROR('#644: -8 << 20 === -8388608. Actual: ' + (-8 << 20));
+}
+
+
+if (-16 << 20 !== -16777216) {
+ $ERROR('#645: -16 << 20 === -16777216. Actual: ' + (-16 << 20));
+}
+
+
+if (-32 << 20 !== -33554432) {
+ $ERROR('#646: -32 << 20 === -33554432. Actual: ' + (-32 << 20));
+}
+
+
+if (-64 << 20 !== -67108864) {
+ $ERROR('#647: -64 << 20 === -67108864. Actual: ' + (-64 << 20));
+}
+
+
+if (-128 << 20 !== -134217728) {
+ $ERROR('#648: -128 << 20 === -134217728. Actual: ' + (-128 << 20));
+}
+
+
+if (-256 << 20 !== -268435456) {
+ $ERROR('#649: -256 << 20 === -268435456. Actual: ' + (-256 << 20));
+}
+
+
+if (-512 << 20 !== -536870912) {
+ $ERROR('#650: -512 << 20 === -536870912. Actual: ' + (-512 << 20));
+}
+
+
+if (-1024 << 20 !== -1073741824) {
+ $ERROR('#651: -1024 << 20 === -1073741824. Actual: ' + (-1024 << 20));
+}
+
+
+if (-2048 << 20 !== -2147483648) {
+ $ERROR('#652: -2048 << 20 === -2147483648. Actual: ' + (-2048 << 20));
+}
+
+
+if (-4096 << 20 !== 0) {
+ $ERROR('#653: -4096 << 20 === 0. Actual: ' + (-4096 << 20));
+}
+
+
+if (-8192 << 20 !== 0) {
+ $ERROR('#654: -8192 << 20 === 0. Actual: ' + (-8192 << 20));
+}
+
+
+if (-16384 << 20 !== 0) {
+ $ERROR('#655: -16384 << 20 === 0. Actual: ' + (-16384 << 20));
+}
+
+
+if (-32768 << 20 !== 0) {
+ $ERROR('#656: -32768 << 20 === 0. Actual: ' + (-32768 << 20));
+}
+
+
+if (-65536 << 20 !== 0) {
+ $ERROR('#657: -65536 << 20 === 0. Actual: ' + (-65536 << 20));
+}
+
+
+if (-131072 << 20 !== 0) {
+ $ERROR('#658: -131072 << 20 === 0. Actual: ' + (-131072 << 20));
+}
+
+
+if (-262144 << 20 !== 0) {
+ $ERROR('#659: -262144 << 20 === 0. Actual: ' + (-262144 << 20));
+}
+
+
+if (-524288 << 20 !== 0) {
+ $ERROR('#660: -524288 << 20 === 0. Actual: ' + (-524288 << 20));
+}
+
+
+if (-1048576 << 20 !== 0) {
+ $ERROR('#661: -1048576 << 20 === 0. Actual: ' + (-1048576 << 20));
+}
+
+
+if (-2097152 << 20 !== 0) {
+ $ERROR('#662: -2097152 << 20 === 0. Actual: ' + (-2097152 << 20));
+}
+
+
+if (-4194304 << 20 !== 0) {
+ $ERROR('#663: -4194304 << 20 === 0. Actual: ' + (-4194304 << 20));
+}
+
+
+if (-8388608 << 20 !== 0) {
+ $ERROR('#664: -8388608 << 20 === 0. Actual: ' + (-8388608 << 20));
+}
+
+
+if (-16777216 << 20 !== 0) {
+ $ERROR('#665: -16777216 << 20 === 0. Actual: ' + (-16777216 << 20));
+}
+
+
+if (-33554432 << 20 !== 0) {
+ $ERROR('#666: -33554432 << 20 === 0. Actual: ' + (-33554432 << 20));
+}
+
+
+if (-67108864 << 20 !== 0) {
+ $ERROR('#667: -67108864 << 20 === 0. Actual: ' + (-67108864 << 20));
+}
+
+
+if (-134217728 << 20 !== 0) {
+ $ERROR('#668: -134217728 << 20 === 0. Actual: ' + (-134217728 << 20));
+}
+
+
+if (-268435456 << 20 !== 0) {
+ $ERROR('#669: -268435456 << 20 === 0. Actual: ' + (-268435456 << 20));
+}
+
+
+if (-536870912 << 20 !== 0) {
+ $ERROR('#670: -536870912 << 20 === 0. Actual: ' + (-536870912 << 20));
+}
+
+
+if (-1073741824 << 20 !== 0) {
+ $ERROR('#671: -1073741824 << 20 === 0. Actual: ' + (-1073741824 << 20));
+}
+
+
+if (-2147483648 << 20 !== 0) {
+ $ERROR('#672: -2147483648 << 20 === 0. Actual: ' + (-2147483648 << 20));
+}
+
+
+if (-1 << 21 !== -2097152) {
+ $ERROR('#673: -1 << 21 === -2097152. Actual: ' + (-1 << 21));
+}
+
+
+if (-2 << 21 !== -4194304) {
+ $ERROR('#674: -2 << 21 === -4194304. Actual: ' + (-2 << 21));
+}
+
+
+if (-4 << 21 !== -8388608) {
+ $ERROR('#675: -4 << 21 === -8388608. Actual: ' + (-4 << 21));
+}
+
+
+if (-8 << 21 !== -16777216) {
+ $ERROR('#676: -8 << 21 === -16777216. Actual: ' + (-8 << 21));
+}
+
+
+if (-16 << 21 !== -33554432) {
+ $ERROR('#677: -16 << 21 === -33554432. Actual: ' + (-16 << 21));
+}
+
+
+if (-32 << 21 !== -67108864) {
+ $ERROR('#678: -32 << 21 === -67108864. Actual: ' + (-32 << 21));
+}
+
+
+if (-64 << 21 !== -134217728) {
+ $ERROR('#679: -64 << 21 === -134217728. Actual: ' + (-64 << 21));
+}
+
+
+if (-128 << 21 !== -268435456) {
+ $ERROR('#680: -128 << 21 === -268435456. Actual: ' + (-128 << 21));
+}
+
+
+if (-256 << 21 !== -536870912) {
+ $ERROR('#681: -256 << 21 === -536870912. Actual: ' + (-256 << 21));
+}
+
+
+if (-512 << 21 !== -1073741824) {
+ $ERROR('#682: -512 << 21 === -1073741824. Actual: ' + (-512 << 21));
+}
+
+
+if (-1024 << 21 !== -2147483648) {
+ $ERROR('#683: -1024 << 21 === -2147483648. Actual: ' + (-1024 << 21));
+}
+
+
+if (-2048 << 21 !== 0) {
+ $ERROR('#684: -2048 << 21 === 0. Actual: ' + (-2048 << 21));
+}
+
+
+if (-4096 << 21 !== 0) {
+ $ERROR('#685: -4096 << 21 === 0. Actual: ' + (-4096 << 21));
+}
+
+
+if (-8192 << 21 !== 0) {
+ $ERROR('#686: -8192 << 21 === 0. Actual: ' + (-8192 << 21));
+}
+
+
+if (-16384 << 21 !== 0) {
+ $ERROR('#687: -16384 << 21 === 0. Actual: ' + (-16384 << 21));
+}
+
+
+if (-32768 << 21 !== 0) {
+ $ERROR('#688: -32768 << 21 === 0. Actual: ' + (-32768 << 21));
+}
+
+
+if (-65536 << 21 !== 0) {
+ $ERROR('#689: -65536 << 21 === 0. Actual: ' + (-65536 << 21));
+}
+
+
+if (-131072 << 21 !== 0) {
+ $ERROR('#690: -131072 << 21 === 0. Actual: ' + (-131072 << 21));
+}
+
+
+if (-262144 << 21 !== 0) {
+ $ERROR('#691: -262144 << 21 === 0. Actual: ' + (-262144 << 21));
+}
+
+
+if (-524288 << 21 !== 0) {
+ $ERROR('#692: -524288 << 21 === 0. Actual: ' + (-524288 << 21));
+}
+
+
+if (-1048576 << 21 !== 0) {
+ $ERROR('#693: -1048576 << 21 === 0. Actual: ' + (-1048576 << 21));
+}
+
+
+if (-2097152 << 21 !== 0) {
+ $ERROR('#694: -2097152 << 21 === 0. Actual: ' + (-2097152 << 21));
+}
+
+
+if (-4194304 << 21 !== 0) {
+ $ERROR('#695: -4194304 << 21 === 0. Actual: ' + (-4194304 << 21));
+}
+
+
+if (-8388608 << 21 !== 0) {
+ $ERROR('#696: -8388608 << 21 === 0. Actual: ' + (-8388608 << 21));
+}
+
+
+if (-16777216 << 21 !== 0) {
+ $ERROR('#697: -16777216 << 21 === 0. Actual: ' + (-16777216 << 21));
+}
+
+
+if (-33554432 << 21 !== 0) {
+ $ERROR('#698: -33554432 << 21 === 0. Actual: ' + (-33554432 << 21));
+}
+
+
+if (-67108864 << 21 !== 0) {
+ $ERROR('#699: -67108864 << 21 === 0. Actual: ' + (-67108864 << 21));
+}
+
+
+if (-134217728 << 21 !== 0) {
+ $ERROR('#700: -134217728 << 21 === 0. Actual: ' + (-134217728 << 21));
+}
+
+
+if (-268435456 << 21 !== 0) {
+ $ERROR('#701: -268435456 << 21 === 0. Actual: ' + (-268435456 << 21));
+}
+
+
+if (-536870912 << 21 !== 0) {
+ $ERROR('#702: -536870912 << 21 === 0. Actual: ' + (-536870912 << 21));
+}
+
+
+if (-1073741824 << 21 !== 0) {
+ $ERROR('#703: -1073741824 << 21 === 0. Actual: ' + (-1073741824 << 21));
+}
+
+
+if (-2147483648 << 21 !== 0) {
+ $ERROR('#704: -2147483648 << 21 === 0. Actual: ' + (-2147483648 << 21));
+}
+
+
+if (-1 << 22 !== -4194304) {
+ $ERROR('#705: -1 << 22 === -4194304. Actual: ' + (-1 << 22));
+}
+
+
+if (-2 << 22 !== -8388608) {
+ $ERROR('#706: -2 << 22 === -8388608. Actual: ' + (-2 << 22));
+}
+
+
+if (-4 << 22 !== -16777216) {
+ $ERROR('#707: -4 << 22 === -16777216. Actual: ' + (-4 << 22));
+}
+
+
+if (-8 << 22 !== -33554432) {
+ $ERROR('#708: -8 << 22 === -33554432. Actual: ' + (-8 << 22));
+}
+
+
+if (-16 << 22 !== -67108864) {
+ $ERROR('#709: -16 << 22 === -67108864. Actual: ' + (-16 << 22));
+}
+
+
+if (-32 << 22 !== -134217728) {
+ $ERROR('#710: -32 << 22 === -134217728. Actual: ' + (-32 << 22));
+}
+
+
+if (-64 << 22 !== -268435456) {
+ $ERROR('#711: -64 << 22 === -268435456. Actual: ' + (-64 << 22));
+}
+
+
+if (-128 << 22 !== -536870912) {
+ $ERROR('#712: -128 << 22 === -536870912. Actual: ' + (-128 << 22));
+}
+
+
+if (-256 << 22 !== -1073741824) {
+ $ERROR('#713: -256 << 22 === -1073741824. Actual: ' + (-256 << 22));
+}
+
+
+if (-512 << 22 !== -2147483648) {
+ $ERROR('#714: -512 << 22 === -2147483648. Actual: ' + (-512 << 22));
+}
+
+
+if (-1024 << 22 !== 0) {
+ $ERROR('#715: -1024 << 22 === 0. Actual: ' + (-1024 << 22));
+}
+
+
+if (-2048 << 22 !== 0) {
+ $ERROR('#716: -2048 << 22 === 0. Actual: ' + (-2048 << 22));
+}
+
+
+if (-4096 << 22 !== 0) {
+ $ERROR('#717: -4096 << 22 === 0. Actual: ' + (-4096 << 22));
+}
+
+
+if (-8192 << 22 !== 0) {
+ $ERROR('#718: -8192 << 22 === 0. Actual: ' + (-8192 << 22));
+}
+
+
+if (-16384 << 22 !== 0) {
+ $ERROR('#719: -16384 << 22 === 0. Actual: ' + (-16384 << 22));
+}
+
+
+if (-32768 << 22 !== 0) {
+ $ERROR('#720: -32768 << 22 === 0. Actual: ' + (-32768 << 22));
+}
+
+
+if (-65536 << 22 !== 0) {
+ $ERROR('#721: -65536 << 22 === 0. Actual: ' + (-65536 << 22));
+}
+
+
+if (-131072 << 22 !== 0) {
+ $ERROR('#722: -131072 << 22 === 0. Actual: ' + (-131072 << 22));
+}
+
+
+if (-262144 << 22 !== 0) {
+ $ERROR('#723: -262144 << 22 === 0. Actual: ' + (-262144 << 22));
+}
+
+
+if (-524288 << 22 !== 0) {
+ $ERROR('#724: -524288 << 22 === 0. Actual: ' + (-524288 << 22));
+}
+
+
+if (-1048576 << 22 !== 0) {
+ $ERROR('#725: -1048576 << 22 === 0. Actual: ' + (-1048576 << 22));
+}
+
+
+if (-2097152 << 22 !== 0) {
+ $ERROR('#726: -2097152 << 22 === 0. Actual: ' + (-2097152 << 22));
+}
+
+
+if (-4194304 << 22 !== 0) {
+ $ERROR('#727: -4194304 << 22 === 0. Actual: ' + (-4194304 << 22));
+}
+
+
+if (-8388608 << 22 !== 0) {
+ $ERROR('#728: -8388608 << 22 === 0. Actual: ' + (-8388608 << 22));
+}
+
+
+if (-16777216 << 22 !== 0) {
+ $ERROR('#729: -16777216 << 22 === 0. Actual: ' + (-16777216 << 22));
+}
+
+
+if (-33554432 << 22 !== 0) {
+ $ERROR('#730: -33554432 << 22 === 0. Actual: ' + (-33554432 << 22));
+}
+
+
+if (-67108864 << 22 !== 0) {
+ $ERROR('#731: -67108864 << 22 === 0. Actual: ' + (-67108864 << 22));
+}
+
+
+if (-134217728 << 22 !== 0) {
+ $ERROR('#732: -134217728 << 22 === 0. Actual: ' + (-134217728 << 22));
+}
+
+
+if (-268435456 << 22 !== 0) {
+ $ERROR('#733: -268435456 << 22 === 0. Actual: ' + (-268435456 << 22));
+}
+
+
+if (-536870912 << 22 !== 0) {
+ $ERROR('#734: -536870912 << 22 === 0. Actual: ' + (-536870912 << 22));
+}
+
+
+if (-1073741824 << 22 !== 0) {
+ $ERROR('#735: -1073741824 << 22 === 0. Actual: ' + (-1073741824 << 22));
+}
+
+
+if (-2147483648 << 22 !== 0) {
+ $ERROR('#736: -2147483648 << 22 === 0. Actual: ' + (-2147483648 << 22));
+}
+
+
+if (-1 << 23 !== -8388608) {
+ $ERROR('#737: -1 << 23 === -8388608. Actual: ' + (-1 << 23));
+}
+
+
+if (-2 << 23 !== -16777216) {
+ $ERROR('#738: -2 << 23 === -16777216. Actual: ' + (-2 << 23));
+}
+
+
+if (-4 << 23 !== -33554432) {
+ $ERROR('#739: -4 << 23 === -33554432. Actual: ' + (-4 << 23));
+}
+
+
+if (-8 << 23 !== -67108864) {
+ $ERROR('#740: -8 << 23 === -67108864. Actual: ' + (-8 << 23));
+}
+
+
+if (-16 << 23 !== -134217728) {
+ $ERROR('#741: -16 << 23 === -134217728. Actual: ' + (-16 << 23));
+}
+
+
+if (-32 << 23 !== -268435456) {
+ $ERROR('#742: -32 << 23 === -268435456. Actual: ' + (-32 << 23));
+}
+
+
+if (-64 << 23 !== -536870912) {
+ $ERROR('#743: -64 << 23 === -536870912. Actual: ' + (-64 << 23));
+}
+
+
+if (-128 << 23 !== -1073741824) {
+ $ERROR('#744: -128 << 23 === -1073741824. Actual: ' + (-128 << 23));
+}
+
+
+if (-256 << 23 !== -2147483648) {
+ $ERROR('#745: -256 << 23 === -2147483648. Actual: ' + (-256 << 23));
+}
+
+
+if (-512 << 23 !== 0) {
+ $ERROR('#746: -512 << 23 === 0. Actual: ' + (-512 << 23));
+}
+
+
+if (-1024 << 23 !== 0) {
+ $ERROR('#747: -1024 << 23 === 0. Actual: ' + (-1024 << 23));
+}
+
+
+if (-2048 << 23 !== 0) {
+ $ERROR('#748: -2048 << 23 === 0. Actual: ' + (-2048 << 23));
+}
+
+
+if (-4096 << 23 !== 0) {
+ $ERROR('#749: -4096 << 23 === 0. Actual: ' + (-4096 << 23));
+}
+
+
+if (-8192 << 23 !== 0) {
+ $ERROR('#750: -8192 << 23 === 0. Actual: ' + (-8192 << 23));
+}
+
+
+if (-16384 << 23 !== 0) {
+ $ERROR('#751: -16384 << 23 === 0. Actual: ' + (-16384 << 23));
+}
+
+
+if (-32768 << 23 !== 0) {
+ $ERROR('#752: -32768 << 23 === 0. Actual: ' + (-32768 << 23));
+}
+
+
+if (-65536 << 23 !== 0) {
+ $ERROR('#753: -65536 << 23 === 0. Actual: ' + (-65536 << 23));
+}
+
+
+if (-131072 << 23 !== 0) {
+ $ERROR('#754: -131072 << 23 === 0. Actual: ' + (-131072 << 23));
+}
+
+
+if (-262144 << 23 !== 0) {
+ $ERROR('#755: -262144 << 23 === 0. Actual: ' + (-262144 << 23));
+}
+
+
+if (-524288 << 23 !== 0) {
+ $ERROR('#756: -524288 << 23 === 0. Actual: ' + (-524288 << 23));
+}
+
+
+if (-1048576 << 23 !== 0) {
+ $ERROR('#757: -1048576 << 23 === 0. Actual: ' + (-1048576 << 23));
+}
+
+
+if (-2097152 << 23 !== 0) {
+ $ERROR('#758: -2097152 << 23 === 0. Actual: ' + (-2097152 << 23));
+}
+
+
+if (-4194304 << 23 !== 0) {
+ $ERROR('#759: -4194304 << 23 === 0. Actual: ' + (-4194304 << 23));
+}
+
+
+if (-8388608 << 23 !== 0) {
+ $ERROR('#760: -8388608 << 23 === 0. Actual: ' + (-8388608 << 23));
+}
+
+
+if (-16777216 << 23 !== 0) {
+ $ERROR('#761: -16777216 << 23 === 0. Actual: ' + (-16777216 << 23));
+}
+
+
+if (-33554432 << 23 !== 0) {
+ $ERROR('#762: -33554432 << 23 === 0. Actual: ' + (-33554432 << 23));
+}
+
+
+if (-67108864 << 23 !== 0) {
+ $ERROR('#763: -67108864 << 23 === 0. Actual: ' + (-67108864 << 23));
+}
+
+
+if (-134217728 << 23 !== 0) {
+ $ERROR('#764: -134217728 << 23 === 0. Actual: ' + (-134217728 << 23));
+}
+
+
+if (-268435456 << 23 !== 0) {
+ $ERROR('#765: -268435456 << 23 === 0. Actual: ' + (-268435456 << 23));
+}
+
+
+if (-536870912 << 23 !== 0) {
+ $ERROR('#766: -536870912 << 23 === 0. Actual: ' + (-536870912 << 23));
+}
+
+
+if (-1073741824 << 23 !== 0) {
+ $ERROR('#767: -1073741824 << 23 === 0. Actual: ' + (-1073741824 << 23));
+}
+
+
+if (-2147483648 << 23 !== 0) {
+ $ERROR('#768: -2147483648 << 23 === 0. Actual: ' + (-2147483648 << 23));
+}
+
+
+if (-1 << 24 !== -16777216) {
+ $ERROR('#769: -1 << 24 === -16777216. Actual: ' + (-1 << 24));
+}
+
+
+if (-2 << 24 !== -33554432) {
+ $ERROR('#770: -2 << 24 === -33554432. Actual: ' + (-2 << 24));
+}
+
+
+if (-4 << 24 !== -67108864) {
+ $ERROR('#771: -4 << 24 === -67108864. Actual: ' + (-4 << 24));
+}
+
+
+if (-8 << 24 !== -134217728) {
+ $ERROR('#772: -8 << 24 === -134217728. Actual: ' + (-8 << 24));
+}
+
+
+if (-16 << 24 !== -268435456) {
+ $ERROR('#773: -16 << 24 === -268435456. Actual: ' + (-16 << 24));
+}
+
+
+if (-32 << 24 !== -536870912) {
+ $ERROR('#774: -32 << 24 === -536870912. Actual: ' + (-32 << 24));
+}
+
+
+if (-64 << 24 !== -1073741824) {
+ $ERROR('#775: -64 << 24 === -1073741824. Actual: ' + (-64 << 24));
+}
+
+
+if (-128 << 24 !== -2147483648) {
+ $ERROR('#776: -128 << 24 === -2147483648. Actual: ' + (-128 << 24));
+}
+
+
+if (-256 << 24 !== 0) {
+ $ERROR('#777: -256 << 24 === 0. Actual: ' + (-256 << 24));
+}
+
+
+if (-512 << 24 !== 0) {
+ $ERROR('#778: -512 << 24 === 0. Actual: ' + (-512 << 24));
+}
+
+
+if (-1024 << 24 !== 0) {
+ $ERROR('#779: -1024 << 24 === 0. Actual: ' + (-1024 << 24));
+}
+
+
+if (-2048 << 24 !== 0) {
+ $ERROR('#780: -2048 << 24 === 0. Actual: ' + (-2048 << 24));
+}
+
+
+if (-4096 << 24 !== 0) {
+ $ERROR('#781: -4096 << 24 === 0. Actual: ' + (-4096 << 24));
+}
+
+
+if (-8192 << 24 !== 0) {
+ $ERROR('#782: -8192 << 24 === 0. Actual: ' + (-8192 << 24));
+}
+
+
+if (-16384 << 24 !== 0) {
+ $ERROR('#783: -16384 << 24 === 0. Actual: ' + (-16384 << 24));
+}
+
+
+if (-32768 << 24 !== 0) {
+ $ERROR('#784: -32768 << 24 === 0. Actual: ' + (-32768 << 24));
+}
+
+
+if (-65536 << 24 !== 0) {
+ $ERROR('#785: -65536 << 24 === 0. Actual: ' + (-65536 << 24));
+}
+
+
+if (-131072 << 24 !== 0) {
+ $ERROR('#786: -131072 << 24 === 0. Actual: ' + (-131072 << 24));
+}
+
+
+if (-262144 << 24 !== 0) {
+ $ERROR('#787: -262144 << 24 === 0. Actual: ' + (-262144 << 24));
+}
+
+
+if (-524288 << 24 !== 0) {
+ $ERROR('#788: -524288 << 24 === 0. Actual: ' + (-524288 << 24));
+}
+
+
+if (-1048576 << 24 !== 0) {
+ $ERROR('#789: -1048576 << 24 === 0. Actual: ' + (-1048576 << 24));
+}
+
+
+if (-2097152 << 24 !== 0) {
+ $ERROR('#790: -2097152 << 24 === 0. Actual: ' + (-2097152 << 24));
+}
+
+
+if (-4194304 << 24 !== 0) {
+ $ERROR('#791: -4194304 << 24 === 0. Actual: ' + (-4194304 << 24));
+}
+
+
+if (-8388608 << 24 !== 0) {
+ $ERROR('#792: -8388608 << 24 === 0. Actual: ' + (-8388608 << 24));
+}
+
+
+if (-16777216 << 24 !== 0) {
+ $ERROR('#793: -16777216 << 24 === 0. Actual: ' + (-16777216 << 24));
+}
+
+
+if (-33554432 << 24 !== 0) {
+ $ERROR('#794: -33554432 << 24 === 0. Actual: ' + (-33554432 << 24));
+}
+
+
+if (-67108864 << 24 !== 0) {
+ $ERROR('#795: -67108864 << 24 === 0. Actual: ' + (-67108864 << 24));
+}
+
+
+if (-134217728 << 24 !== 0) {
+ $ERROR('#796: -134217728 << 24 === 0. Actual: ' + (-134217728 << 24));
+}
+
+
+if (-268435456 << 24 !== 0) {
+ $ERROR('#797: -268435456 << 24 === 0. Actual: ' + (-268435456 << 24));
+}
+
+
+if (-536870912 << 24 !== 0) {
+ $ERROR('#798: -536870912 << 24 === 0. Actual: ' + (-536870912 << 24));
+}
+
+
+if (-1073741824 << 24 !== 0) {
+ $ERROR('#799: -1073741824 << 24 === 0. Actual: ' + (-1073741824 << 24));
+}
+
+
+if (-2147483648 << 24 !== 0) {
+ $ERROR('#800: -2147483648 << 24 === 0. Actual: ' + (-2147483648 << 24));
+}
+
+
+if (-1 << 25 !== -33554432) {
+ $ERROR('#801: -1 << 25 === -33554432. Actual: ' + (-1 << 25));
+}
+
+
+if (-2 << 25 !== -67108864) {
+ $ERROR('#802: -2 << 25 === -67108864. Actual: ' + (-2 << 25));
+}
+
+
+if (-4 << 25 !== -134217728) {
+ $ERROR('#803: -4 << 25 === -134217728. Actual: ' + (-4 << 25));
+}
+
+
+if (-8 << 25 !== -268435456) {
+ $ERROR('#804: -8 << 25 === -268435456. Actual: ' + (-8 << 25));
+}
+
+
+if (-16 << 25 !== -536870912) {
+ $ERROR('#805: -16 << 25 === -536870912. Actual: ' + (-16 << 25));
+}
+
+
+if (-32 << 25 !== -1073741824) {
+ $ERROR('#806: -32 << 25 === -1073741824. Actual: ' + (-32 << 25));
+}
+
+
+if (-64 << 25 !== -2147483648) {
+ $ERROR('#807: -64 << 25 === -2147483648. Actual: ' + (-64 << 25));
+}
+
+
+if (-128 << 25 !== 0) {
+ $ERROR('#808: -128 << 25 === 0. Actual: ' + (-128 << 25));
+}
+
+
+if (-256 << 25 !== 0) {
+ $ERROR('#809: -256 << 25 === 0. Actual: ' + (-256 << 25));
+}
+
+
+if (-512 << 25 !== 0) {
+ $ERROR('#810: -512 << 25 === 0. Actual: ' + (-512 << 25));
+}
+
+
+if (-1024 << 25 !== 0) {
+ $ERROR('#811: -1024 << 25 === 0. Actual: ' + (-1024 << 25));
+}
+
+
+if (-2048 << 25 !== 0) {
+ $ERROR('#812: -2048 << 25 === 0. Actual: ' + (-2048 << 25));
+}
+
+
+if (-4096 << 25 !== 0) {
+ $ERROR('#813: -4096 << 25 === 0. Actual: ' + (-4096 << 25));
+}
+
+
+if (-8192 << 25 !== 0) {
+ $ERROR('#814: -8192 << 25 === 0. Actual: ' + (-8192 << 25));
+}
+
+
+if (-16384 << 25 !== 0) {
+ $ERROR('#815: -16384 << 25 === 0. Actual: ' + (-16384 << 25));
+}
+
+
+if (-32768 << 25 !== 0) {
+ $ERROR('#816: -32768 << 25 === 0. Actual: ' + (-32768 << 25));
+}
+
+
+if (-65536 << 25 !== 0) {
+ $ERROR('#817: -65536 << 25 === 0. Actual: ' + (-65536 << 25));
+}
+
+
+if (-131072 << 25 !== 0) {
+ $ERROR('#818: -131072 << 25 === 0. Actual: ' + (-131072 << 25));
+}
+
+
+if (-262144 << 25 !== 0) {
+ $ERROR('#819: -262144 << 25 === 0. Actual: ' + (-262144 << 25));
+}
+
+
+if (-524288 << 25 !== 0) {
+ $ERROR('#820: -524288 << 25 === 0. Actual: ' + (-524288 << 25));
+}
+
+
+if (-1048576 << 25 !== 0) {
+ $ERROR('#821: -1048576 << 25 === 0. Actual: ' + (-1048576 << 25));
+}
+
+
+if (-2097152 << 25 !== 0) {
+ $ERROR('#822: -2097152 << 25 === 0. Actual: ' + (-2097152 << 25));
+}
+
+
+if (-4194304 << 25 !== 0) {
+ $ERROR('#823: -4194304 << 25 === 0. Actual: ' + (-4194304 << 25));
+}
+
+
+if (-8388608 << 25 !== 0) {
+ $ERROR('#824: -8388608 << 25 === 0. Actual: ' + (-8388608 << 25));
+}
+
+
+if (-16777216 << 25 !== 0) {
+ $ERROR('#825: -16777216 << 25 === 0. Actual: ' + (-16777216 << 25));
+}
+
+
+if (-33554432 << 25 !== 0) {
+ $ERROR('#826: -33554432 << 25 === 0. Actual: ' + (-33554432 << 25));
+}
+
+
+if (-67108864 << 25 !== 0) {
+ $ERROR('#827: -67108864 << 25 === 0. Actual: ' + (-67108864 << 25));
+}
+
+
+if (-134217728 << 25 !== 0) {
+ $ERROR('#828: -134217728 << 25 === 0. Actual: ' + (-134217728 << 25));
+}
+
+
+if (-268435456 << 25 !== 0) {
+ $ERROR('#829: -268435456 << 25 === 0. Actual: ' + (-268435456 << 25));
+}
+
+
+if (-536870912 << 25 !== 0) {
+ $ERROR('#830: -536870912 << 25 === 0. Actual: ' + (-536870912 << 25));
+}
+
+
+if (-1073741824 << 25 !== 0) {
+ $ERROR('#831: -1073741824 << 25 === 0. Actual: ' + (-1073741824 << 25));
+}
+
+
+if (-2147483648 << 25 !== 0) {
+ $ERROR('#832: -2147483648 << 25 === 0. Actual: ' + (-2147483648 << 25));
+}
+
+
+if (-1 << 26 !== -67108864) {
+ $ERROR('#833: -1 << 26 === -67108864. Actual: ' + (-1 << 26));
+}
+
+
+if (-2 << 26 !== -134217728) {
+ $ERROR('#834: -2 << 26 === -134217728. Actual: ' + (-2 << 26));
+}
+
+
+if (-4 << 26 !== -268435456) {
+ $ERROR('#835: -4 << 26 === -268435456. Actual: ' + (-4 << 26));
+}
+
+
+if (-8 << 26 !== -536870912) {
+ $ERROR('#836: -8 << 26 === -536870912. Actual: ' + (-8 << 26));
+}
+
+
+if (-16 << 26 !== -1073741824) {
+ $ERROR('#837: -16 << 26 === -1073741824. Actual: ' + (-16 << 26));
+}
+
+
+if (-32 << 26 !== -2147483648) {
+ $ERROR('#838: -32 << 26 === -2147483648. Actual: ' + (-32 << 26));
+}
+
+
+if (-64 << 26 !== 0) {
+ $ERROR('#839: -64 << 26 === 0. Actual: ' + (-64 << 26));
+}
+
+
+if (-128 << 26 !== 0) {
+ $ERROR('#840: -128 << 26 === 0. Actual: ' + (-128 << 26));
+}
+
+
+if (-256 << 26 !== 0) {
+ $ERROR('#841: -256 << 26 === 0. Actual: ' + (-256 << 26));
+}
+
+
+if (-512 << 26 !== 0) {
+ $ERROR('#842: -512 << 26 === 0. Actual: ' + (-512 << 26));
+}
+
+
+if (-1024 << 26 !== 0) {
+ $ERROR('#843: -1024 << 26 === 0. Actual: ' + (-1024 << 26));
+}
+
+
+if (-2048 << 26 !== 0) {
+ $ERROR('#844: -2048 << 26 === 0. Actual: ' + (-2048 << 26));
+}
+
+
+if (-4096 << 26 !== 0) {
+ $ERROR('#845: -4096 << 26 === 0. Actual: ' + (-4096 << 26));
+}
+
+
+if (-8192 << 26 !== 0) {
+ $ERROR('#846: -8192 << 26 === 0. Actual: ' + (-8192 << 26));
+}
+
+
+if (-16384 << 26 !== 0) {
+ $ERROR('#847: -16384 << 26 === 0. Actual: ' + (-16384 << 26));
+}
+
+
+if (-32768 << 26 !== 0) {
+ $ERROR('#848: -32768 << 26 === 0. Actual: ' + (-32768 << 26));
+}
+
+
+if (-65536 << 26 !== 0) {
+ $ERROR('#849: -65536 << 26 === 0. Actual: ' + (-65536 << 26));
+}
+
+
+if (-131072 << 26 !== 0) {
+ $ERROR('#850: -131072 << 26 === 0. Actual: ' + (-131072 << 26));
+}
+
+
+if (-262144 << 26 !== 0) {
+ $ERROR('#851: -262144 << 26 === 0. Actual: ' + (-262144 << 26));
+}
+
+
+if (-524288 << 26 !== 0) {
+ $ERROR('#852: -524288 << 26 === 0. Actual: ' + (-524288 << 26));
+}
+
+
+if (-1048576 << 26 !== 0) {
+ $ERROR('#853: -1048576 << 26 === 0. Actual: ' + (-1048576 << 26));
+}
+
+
+if (-2097152 << 26 !== 0) {
+ $ERROR('#854: -2097152 << 26 === 0. Actual: ' + (-2097152 << 26));
+}
+
+
+if (-4194304 << 26 !== 0) {
+ $ERROR('#855: -4194304 << 26 === 0. Actual: ' + (-4194304 << 26));
+}
+
+
+if (-8388608 << 26 !== 0) {
+ $ERROR('#856: -8388608 << 26 === 0. Actual: ' + (-8388608 << 26));
+}
+
+
+if (-16777216 << 26 !== 0) {
+ $ERROR('#857: -16777216 << 26 === 0. Actual: ' + (-16777216 << 26));
+}
+
+
+if (-33554432 << 26 !== 0) {
+ $ERROR('#858: -33554432 << 26 === 0. Actual: ' + (-33554432 << 26));
+}
+
+
+if (-67108864 << 26 !== 0) {
+ $ERROR('#859: -67108864 << 26 === 0. Actual: ' + (-67108864 << 26));
+}
+
+
+if (-134217728 << 26 !== 0) {
+ $ERROR('#860: -134217728 << 26 === 0. Actual: ' + (-134217728 << 26));
+}
+
+
+if (-268435456 << 26 !== 0) {
+ $ERROR('#861: -268435456 << 26 === 0. Actual: ' + (-268435456 << 26));
+}
+
+
+if (-536870912 << 26 !== 0) {
+ $ERROR('#862: -536870912 << 26 === 0. Actual: ' + (-536870912 << 26));
+}
+
+
+if (-1073741824 << 26 !== 0) {
+ $ERROR('#863: -1073741824 << 26 === 0. Actual: ' + (-1073741824 << 26));
+}
+
+
+if (-2147483648 << 26 !== 0) {
+ $ERROR('#864: -2147483648 << 26 === 0. Actual: ' + (-2147483648 << 26));
+}
+
+
+if (-1 << 27 !== -134217728) {
+ $ERROR('#865: -1 << 27 === -134217728. Actual: ' + (-1 << 27));
+}
+
+
+if (-2 << 27 !== -268435456) {
+ $ERROR('#866: -2 << 27 === -268435456. Actual: ' + (-2 << 27));
+}
+
+
+if (-4 << 27 !== -536870912) {
+ $ERROR('#867: -4 << 27 === -536870912. Actual: ' + (-4 << 27));
+}
+
+
+if (-8 << 27 !== -1073741824) {
+ $ERROR('#868: -8 << 27 === -1073741824. Actual: ' + (-8 << 27));
+}
+
+
+if (-16 << 27 !== -2147483648) {
+ $ERROR('#869: -16 << 27 === -2147483648. Actual: ' + (-16 << 27));
+}
+
+
+if (-32 << 27 !== 0) {
+ $ERROR('#870: -32 << 27 === 0. Actual: ' + (-32 << 27));
+}
+
+
+if (-64 << 27 !== 0) {
+ $ERROR('#871: -64 << 27 === 0. Actual: ' + (-64 << 27));
+}
+
+
+if (-128 << 27 !== 0) {
+ $ERROR('#872: -128 << 27 === 0. Actual: ' + (-128 << 27));
+}
+
+
+if (-256 << 27 !== 0) {
+ $ERROR('#873: -256 << 27 === 0. Actual: ' + (-256 << 27));
+}
+
+
+if (-512 << 27 !== 0) {
+ $ERROR('#874: -512 << 27 === 0. Actual: ' + (-512 << 27));
+}
+
+
+if (-1024 << 27 !== 0) {
+ $ERROR('#875: -1024 << 27 === 0. Actual: ' + (-1024 << 27));
+}
+
+
+if (-2048 << 27 !== 0) {
+ $ERROR('#876: -2048 << 27 === 0. Actual: ' + (-2048 << 27));
+}
+
+
+if (-4096 << 27 !== 0) {
+ $ERROR('#877: -4096 << 27 === 0. Actual: ' + (-4096 << 27));
+}
+
+
+if (-8192 << 27 !== 0) {
+ $ERROR('#878: -8192 << 27 === 0. Actual: ' + (-8192 << 27));
+}
+
+
+if (-16384 << 27 !== 0) {
+ $ERROR('#879: -16384 << 27 === 0. Actual: ' + (-16384 << 27));
+}
+
+
+if (-32768 << 27 !== 0) {
+ $ERROR('#880: -32768 << 27 === 0. Actual: ' + (-32768 << 27));
+}
+
+
+if (-65536 << 27 !== 0) {
+ $ERROR('#881: -65536 << 27 === 0. Actual: ' + (-65536 << 27));
+}
+
+
+if (-131072 << 27 !== 0) {
+ $ERROR('#882: -131072 << 27 === 0. Actual: ' + (-131072 << 27));
+}
+
+
+if (-262144 << 27 !== 0) {
+ $ERROR('#883: -262144 << 27 === 0. Actual: ' + (-262144 << 27));
+}
+
+
+if (-524288 << 27 !== 0) {
+ $ERROR('#884: -524288 << 27 === 0. Actual: ' + (-524288 << 27));
+}
+
+
+if (-1048576 << 27 !== 0) {
+ $ERROR('#885: -1048576 << 27 === 0. Actual: ' + (-1048576 << 27));
+}
+
+
+if (-2097152 << 27 !== 0) {
+ $ERROR('#886: -2097152 << 27 === 0. Actual: ' + (-2097152 << 27));
+}
+
+
+if (-4194304 << 27 !== 0) {
+ $ERROR('#887: -4194304 << 27 === 0. Actual: ' + (-4194304 << 27));
+}
+
+
+if (-8388608 << 27 !== 0) {
+ $ERROR('#888: -8388608 << 27 === 0. Actual: ' + (-8388608 << 27));
+}
+
+
+if (-16777216 << 27 !== 0) {
+ $ERROR('#889: -16777216 << 27 === 0. Actual: ' + (-16777216 << 27));
+}
+
+
+if (-33554432 << 27 !== 0) {
+ $ERROR('#890: -33554432 << 27 === 0. Actual: ' + (-33554432 << 27));
+}
+
+
+if (-67108864 << 27 !== 0) {
+ $ERROR('#891: -67108864 << 27 === 0. Actual: ' + (-67108864 << 27));
+}
+
+
+if (-134217728 << 27 !== 0) {
+ $ERROR('#892: -134217728 << 27 === 0. Actual: ' + (-134217728 << 27));
+}
+
+
+if (-268435456 << 27 !== 0) {
+ $ERROR('#893: -268435456 << 27 === 0. Actual: ' + (-268435456 << 27));
+}
+
+
+if (-536870912 << 27 !== 0) {
+ $ERROR('#894: -536870912 << 27 === 0. Actual: ' + (-536870912 << 27));
+}
+
+
+if (-1073741824 << 27 !== 0) {
+ $ERROR('#895: -1073741824 << 27 === 0. Actual: ' + (-1073741824 << 27));
+}
+
+
+if (-2147483648 << 27 !== 0) {
+ $ERROR('#896: -2147483648 << 27 === 0. Actual: ' + (-2147483648 << 27));
+}
+
+
+if (-1 << 28 !== -268435456) {
+ $ERROR('#897: -1 << 28 === -268435456. Actual: ' + (-1 << 28));
+}
+
+
+if (-2 << 28 !== -536870912) {
+ $ERROR('#898: -2 << 28 === -536870912. Actual: ' + (-2 << 28));
+}
+
+
+if (-4 << 28 !== -1073741824) {
+ $ERROR('#899: -4 << 28 === -1073741824. Actual: ' + (-4 << 28));
+}
+
+
+if (-8 << 28 !== -2147483648) {
+ $ERROR('#900: -8 << 28 === -2147483648. Actual: ' + (-8 << 28));
+}
+
+
+if (-16 << 28 !== 0) {
+ $ERROR('#901: -16 << 28 === 0. Actual: ' + (-16 << 28));
+}
+
+
+if (-32 << 28 !== 0) {
+ $ERROR('#902: -32 << 28 === 0. Actual: ' + (-32 << 28));
+}
+
+
+if (-64 << 28 !== 0) {
+ $ERROR('#903: -64 << 28 === 0. Actual: ' + (-64 << 28));
+}
+
+
+if (-128 << 28 !== 0) {
+ $ERROR('#904: -128 << 28 === 0. Actual: ' + (-128 << 28));
+}
+
+
+if (-256 << 28 !== 0) {
+ $ERROR('#905: -256 << 28 === 0. Actual: ' + (-256 << 28));
+}
+
+
+if (-512 << 28 !== 0) {
+ $ERROR('#906: -512 << 28 === 0. Actual: ' + (-512 << 28));
+}
+
+
+if (-1024 << 28 !== 0) {
+ $ERROR('#907: -1024 << 28 === 0. Actual: ' + (-1024 << 28));
+}
+
+
+if (-2048 << 28 !== 0) {
+ $ERROR('#908: -2048 << 28 === 0. Actual: ' + (-2048 << 28));
+}
+
+
+if (-4096 << 28 !== 0) {
+ $ERROR('#909: -4096 << 28 === 0. Actual: ' + (-4096 << 28));
+}
+
+
+if (-8192 << 28 !== 0) {
+ $ERROR('#910: -8192 << 28 === 0. Actual: ' + (-8192 << 28));
+}
+
+
+if (-16384 << 28 !== 0) {
+ $ERROR('#911: -16384 << 28 === 0. Actual: ' + (-16384 << 28));
+}
+
+
+if (-32768 << 28 !== 0) {
+ $ERROR('#912: -32768 << 28 === 0. Actual: ' + (-32768 << 28));
+}
+
+
+if (-65536 << 28 !== 0) {
+ $ERROR('#913: -65536 << 28 === 0. Actual: ' + (-65536 << 28));
+}
+
+
+if (-131072 << 28 !== 0) {
+ $ERROR('#914: -131072 << 28 === 0. Actual: ' + (-131072 << 28));
+}
+
+
+if (-262144 << 28 !== 0) {
+ $ERROR('#915: -262144 << 28 === 0. Actual: ' + (-262144 << 28));
+}
+
+
+if (-524288 << 28 !== 0) {
+ $ERROR('#916: -524288 << 28 === 0. Actual: ' + (-524288 << 28));
+}
+
+
+if (-1048576 << 28 !== 0) {
+ $ERROR('#917: -1048576 << 28 === 0. Actual: ' + (-1048576 << 28));
+}
+
+
+if (-2097152 << 28 !== 0) {
+ $ERROR('#918: -2097152 << 28 === 0. Actual: ' + (-2097152 << 28));
+}
+
+
+if (-4194304 << 28 !== 0) {
+ $ERROR('#919: -4194304 << 28 === 0. Actual: ' + (-4194304 << 28));
+}
+
+
+if (-8388608 << 28 !== 0) {
+ $ERROR('#920: -8388608 << 28 === 0. Actual: ' + (-8388608 << 28));
+}
+
+
+if (-16777216 << 28 !== 0) {
+ $ERROR('#921: -16777216 << 28 === 0. Actual: ' + (-16777216 << 28));
+}
+
+
+if (-33554432 << 28 !== 0) {
+ $ERROR('#922: -33554432 << 28 === 0. Actual: ' + (-33554432 << 28));
+}
+
+
+if (-67108864 << 28 !== 0) {
+ $ERROR('#923: -67108864 << 28 === 0. Actual: ' + (-67108864 << 28));
+}
+
+
+if (-134217728 << 28 !== 0) {
+ $ERROR('#924: -134217728 << 28 === 0. Actual: ' + (-134217728 << 28));
+}
+
+
+if (-268435456 << 28 !== 0) {
+ $ERROR('#925: -268435456 << 28 === 0. Actual: ' + (-268435456 << 28));
+}
+
+
+if (-536870912 << 28 !== 0) {
+ $ERROR('#926: -536870912 << 28 === 0. Actual: ' + (-536870912 << 28));
+}
+
+
+if (-1073741824 << 28 !== 0) {
+ $ERROR('#927: -1073741824 << 28 === 0. Actual: ' + (-1073741824 << 28));
+}
+
+
+if (-2147483648 << 28 !== 0) {
+ $ERROR('#928: -2147483648 << 28 === 0. Actual: ' + (-2147483648 << 28));
+}
+
+
+if (-1 << 29 !== -536870912) {
+ $ERROR('#929: -1 << 29 === -536870912. Actual: ' + (-1 << 29));
+}
+
+
+if (-2 << 29 !== -1073741824) {
+ $ERROR('#930: -2 << 29 === -1073741824. Actual: ' + (-2 << 29));
+}
+
+
+if (-4 << 29 !== -2147483648) {
+ $ERROR('#931: -4 << 29 === -2147483648. Actual: ' + (-4 << 29));
+}
+
+
+if (-8 << 29 !== 0) {
+ $ERROR('#932: -8 << 29 === 0. Actual: ' + (-8 << 29));
+}
+
+
+if (-16 << 29 !== 0) {
+ $ERROR('#933: -16 << 29 === 0. Actual: ' + (-16 << 29));
+}
+
+
+if (-32 << 29 !== 0) {
+ $ERROR('#934: -32 << 29 === 0. Actual: ' + (-32 << 29));
+}
+
+
+if (-64 << 29 !== 0) {
+ $ERROR('#935: -64 << 29 === 0. Actual: ' + (-64 << 29));
+}
+
+
+if (-128 << 29 !== 0) {
+ $ERROR('#936: -128 << 29 === 0. Actual: ' + (-128 << 29));
+}
+
+
+if (-256 << 29 !== 0) {
+ $ERROR('#937: -256 << 29 === 0. Actual: ' + (-256 << 29));
+}
+
+
+if (-512 << 29 !== 0) {
+ $ERROR('#938: -512 << 29 === 0. Actual: ' + (-512 << 29));
+}
+
+
+if (-1024 << 29 !== 0) {
+ $ERROR('#939: -1024 << 29 === 0. Actual: ' + (-1024 << 29));
+}
+
+
+if (-2048 << 29 !== 0) {
+ $ERROR('#940: -2048 << 29 === 0. Actual: ' + (-2048 << 29));
+}
+
+
+if (-4096 << 29 !== 0) {
+ $ERROR('#941: -4096 << 29 === 0. Actual: ' + (-4096 << 29));
+}
+
+
+if (-8192 << 29 !== 0) {
+ $ERROR('#942: -8192 << 29 === 0. Actual: ' + (-8192 << 29));
+}
+
+
+if (-16384 << 29 !== 0) {
+ $ERROR('#943: -16384 << 29 === 0. Actual: ' + (-16384 << 29));
+}
+
+
+if (-32768 << 29 !== 0) {
+ $ERROR('#944: -32768 << 29 === 0. Actual: ' + (-32768 << 29));
+}
+
+
+if (-65536 << 29 !== 0) {
+ $ERROR('#945: -65536 << 29 === 0. Actual: ' + (-65536 << 29));
+}
+
+
+if (-131072 << 29 !== 0) {
+ $ERROR('#946: -131072 << 29 === 0. Actual: ' + (-131072 << 29));
+}
+
+
+if (-262144 << 29 !== 0) {
+ $ERROR('#947: -262144 << 29 === 0. Actual: ' + (-262144 << 29));
+}
+
+
+if (-524288 << 29 !== 0) {
+ $ERROR('#948: -524288 << 29 === 0. Actual: ' + (-524288 << 29));
+}
+
+
+if (-1048576 << 29 !== 0) {
+ $ERROR('#949: -1048576 << 29 === 0. Actual: ' + (-1048576 << 29));
+}
+
+
+if (-2097152 << 29 !== 0) {
+ $ERROR('#950: -2097152 << 29 === 0. Actual: ' + (-2097152 << 29));
+}
+
+
+if (-4194304 << 29 !== 0) {
+ $ERROR('#951: -4194304 << 29 === 0. Actual: ' + (-4194304 << 29));
+}
+
+
+if (-8388608 << 29 !== 0) {
+ $ERROR('#952: -8388608 << 29 === 0. Actual: ' + (-8388608 << 29));
+}
+
+
+if (-16777216 << 29 !== 0) {
+ $ERROR('#953: -16777216 << 29 === 0. Actual: ' + (-16777216 << 29));
+}
+
+
+if (-33554432 << 29 !== 0) {
+ $ERROR('#954: -33554432 << 29 === 0. Actual: ' + (-33554432 << 29));
+}
+
+
+if (-67108864 << 29 !== 0) {
+ $ERROR('#955: -67108864 << 29 === 0. Actual: ' + (-67108864 << 29));
+}
+
+
+if (-134217728 << 29 !== 0) {
+ $ERROR('#956: -134217728 << 29 === 0. Actual: ' + (-134217728 << 29));
+}
+
+
+if (-268435456 << 29 !== 0) {
+ $ERROR('#957: -268435456 << 29 === 0. Actual: ' + (-268435456 << 29));
+}
+
+
+if (-536870912 << 29 !== 0) {
+ $ERROR('#958: -536870912 << 29 === 0. Actual: ' + (-536870912 << 29));
+}
+
+
+if (-1073741824 << 29 !== 0) {
+ $ERROR('#959: -1073741824 << 29 === 0. Actual: ' + (-1073741824 << 29));
+}
+
+
+if (-2147483648 << 29 !== 0) {
+ $ERROR('#960: -2147483648 << 29 === 0. Actual: ' + (-2147483648 << 29));
+}
+
+
+if (-1 << 30 !== -1073741824) {
+ $ERROR('#961: -1 << 30 === -1073741824. Actual: ' + (-1 << 30));
+}
+
+
+if (-2 << 30 !== -2147483648) {
+ $ERROR('#962: -2 << 30 === -2147483648. Actual: ' + (-2 << 30));
+}
+
+
+if (-4 << 30 !== 0) {
+ $ERROR('#963: -4 << 30 === 0. Actual: ' + (-4 << 30));
+}
+
+
+if (-8 << 30 !== 0) {
+ $ERROR('#964: -8 << 30 === 0. Actual: ' + (-8 << 30));
+}
+
+
+if (-16 << 30 !== 0) {
+ $ERROR('#965: -16 << 30 === 0. Actual: ' + (-16 << 30));
+}
+
+
+if (-32 << 30 !== 0) {
+ $ERROR('#966: -32 << 30 === 0. Actual: ' + (-32 << 30));
+}
+
+
+if (-64 << 30 !== 0) {
+ $ERROR('#967: -64 << 30 === 0. Actual: ' + (-64 << 30));
+}
+
+
+if (-128 << 30 !== 0) {
+ $ERROR('#968: -128 << 30 === 0. Actual: ' + (-128 << 30));
+}
+
+
+if (-256 << 30 !== 0) {
+ $ERROR('#969: -256 << 30 === 0. Actual: ' + (-256 << 30));
+}
+
+
+if (-512 << 30 !== 0) {
+ $ERROR('#970: -512 << 30 === 0. Actual: ' + (-512 << 30));
+}
+
+
+if (-1024 << 30 !== 0) {
+ $ERROR('#971: -1024 << 30 === 0. Actual: ' + (-1024 << 30));
+}
+
+
+if (-2048 << 30 !== 0) {
+ $ERROR('#972: -2048 << 30 === 0. Actual: ' + (-2048 << 30));
+}
+
+
+if (-4096 << 30 !== 0) {
+ $ERROR('#973: -4096 << 30 === 0. Actual: ' + (-4096 << 30));
+}
+
+
+if (-8192 << 30 !== 0) {
+ $ERROR('#974: -8192 << 30 === 0. Actual: ' + (-8192 << 30));
+}
+
+
+if (-16384 << 30 !== 0) {
+ $ERROR('#975: -16384 << 30 === 0. Actual: ' + (-16384 << 30));
+}
+
+
+if (-32768 << 30 !== 0) {
+ $ERROR('#976: -32768 << 30 === 0. Actual: ' + (-32768 << 30));
+}
+
+
+if (-65536 << 30 !== 0) {
+ $ERROR('#977: -65536 << 30 === 0. Actual: ' + (-65536 << 30));
+}
+
+
+if (-131072 << 30 !== 0) {
+ $ERROR('#978: -131072 << 30 === 0. Actual: ' + (-131072 << 30));
+}
+
+
+if (-262144 << 30 !== 0) {
+ $ERROR('#979: -262144 << 30 === 0. Actual: ' + (-262144 << 30));
+}
+
+
+if (-524288 << 30 !== 0) {
+ $ERROR('#980: -524288 << 30 === 0. Actual: ' + (-524288 << 30));
+}
+
+
+if (-1048576 << 30 !== 0) {
+ $ERROR('#981: -1048576 << 30 === 0. Actual: ' + (-1048576 << 30));
+}
+
+
+if (-2097152 << 30 !== 0) {
+ $ERROR('#982: -2097152 << 30 === 0. Actual: ' + (-2097152 << 30));
+}
+
+
+if (-4194304 << 30 !== 0) {
+ $ERROR('#983: -4194304 << 30 === 0. Actual: ' + (-4194304 << 30));
+}
+
+
+if (-8388608 << 30 !== 0) {
+ $ERROR('#984: -8388608 << 30 === 0. Actual: ' + (-8388608 << 30));
+}
+
+
+if (-16777216 << 30 !== 0) {
+ $ERROR('#985: -16777216 << 30 === 0. Actual: ' + (-16777216 << 30));
+}
+
+
+if (-33554432 << 30 !== 0) {
+ $ERROR('#986: -33554432 << 30 === 0. Actual: ' + (-33554432 << 30));
+}
+
+
+if (-67108864 << 30 !== 0) {
+ $ERROR('#987: -67108864 << 30 === 0. Actual: ' + (-67108864 << 30));
+}
+
+
+if (-134217728 << 30 !== 0) {
+ $ERROR('#988: -134217728 << 30 === 0. Actual: ' + (-134217728 << 30));
+}
+
+
+if (-268435456 << 30 !== 0) {
+ $ERROR('#989: -268435456 << 30 === 0. Actual: ' + (-268435456 << 30));
+}
+
+
+if (-536870912 << 30 !== 0) {
+ $ERROR('#990: -536870912 << 30 === 0. Actual: ' + (-536870912 << 30));
+}
+
+
+if (-1073741824 << 30 !== 0) {
+ $ERROR('#991: -1073741824 << 30 === 0. Actual: ' + (-1073741824 << 30));
+}
+
+
+if (-2147483648 << 30 !== 0) {
+ $ERROR('#992: -2147483648 << 30 === 0. Actual: ' + (-2147483648 << 30));
+}
+
+
+if (-1 << 31 !== -2147483648) {
+ $ERROR('#993: -1 << 31 === -2147483648. Actual: ' + (-1 << 31));
+}
+
+
+if (-2 << 31 !== 0) {
+ $ERROR('#994: -2 << 31 === 0. Actual: ' + (-2 << 31));
+}
+
+
+if (-4 << 31 !== 0) {
+ $ERROR('#995: -4 << 31 === 0. Actual: ' + (-4 << 31));
+}
+
+
+if (-8 << 31 !== 0) {
+ $ERROR('#996: -8 << 31 === 0. Actual: ' + (-8 << 31));
+}
+
+
+if (-16 << 31 !== 0) {
+ $ERROR('#997: -16 << 31 === 0. Actual: ' + (-16 << 31));
+}
+
+
+if (-32 << 31 !== 0) {
+ $ERROR('#998: -32 << 31 === 0. Actual: ' + (-32 << 31));
+}
+
+
+if (-64 << 31 !== 0) {
+ $ERROR('#999: -64 << 31 === 0. Actual: ' + (-64 << 31));
+}
+
+
+if (-128 << 31 !== 0) {
+ $ERROR('#1000: -128 << 31 === 0. Actual: ' + (-128 << 31));
+}
+
+
+if (-256 << 31 !== 0) {
+ $ERROR('#1001: -256 << 31 === 0. Actual: ' + (-256 << 31));
+}
+
+
+if (-512 << 31 !== 0) {
+ $ERROR('#1002: -512 << 31 === 0. Actual: ' + (-512 << 31));
+}
+
+
+if (-1024 << 31 !== 0) {
+ $ERROR('#1003: -1024 << 31 === 0. Actual: ' + (-1024 << 31));
+}
+
+
+if (-2048 << 31 !== 0) {
+ $ERROR('#1004: -2048 << 31 === 0. Actual: ' + (-2048 << 31));
+}
+
+
+if (-4096 << 31 !== 0) {
+ $ERROR('#1005: -4096 << 31 === 0. Actual: ' + (-4096 << 31));
+}
+
+
+if (-8192 << 31 !== 0) {
+ $ERROR('#1006: -8192 << 31 === 0. Actual: ' + (-8192 << 31));
+}
+
+
+if (-16384 << 31 !== 0) {
+ $ERROR('#1007: -16384 << 31 === 0. Actual: ' + (-16384 << 31));
+}
+
+
+if (-32768 << 31 !== 0) {
+ $ERROR('#1008: -32768 << 31 === 0. Actual: ' + (-32768 << 31));
+}
+
+
+if (-65536 << 31 !== 0) {
+ $ERROR('#1009: -65536 << 31 === 0. Actual: ' + (-65536 << 31));
+}
+
+
+if (-131072 << 31 !== 0) {
+ $ERROR('#1010: -131072 << 31 === 0. Actual: ' + (-131072 << 31));
+}
+
+
+if (-262144 << 31 !== 0) {
+ $ERROR('#1011: -262144 << 31 === 0. Actual: ' + (-262144 << 31));
+}
+
+
+if (-524288 << 31 !== 0) {
+ $ERROR('#1012: -524288 << 31 === 0. Actual: ' + (-524288 << 31));
+}
+
+
+if (-1048576 << 31 !== 0) {
+ $ERROR('#1013: -1048576 << 31 === 0. Actual: ' + (-1048576 << 31));
+}
+
+
+if (-2097152 << 31 !== 0) {
+ $ERROR('#1014: -2097152 << 31 === 0. Actual: ' + (-2097152 << 31));
+}
+
+
+if (-4194304 << 31 !== 0) {
+ $ERROR('#1015: -4194304 << 31 === 0. Actual: ' + (-4194304 << 31));
+}
+
+
+if (-8388608 << 31 !== 0) {
+ $ERROR('#1016: -8388608 << 31 === 0. Actual: ' + (-8388608 << 31));
+}
+
+
+if (-16777216 << 31 !== 0) {
+ $ERROR('#1017: -16777216 << 31 === 0. Actual: ' + (-16777216 << 31));
+}
+
+
+if (-33554432 << 31 !== 0) {
+ $ERROR('#1018: -33554432 << 31 === 0. Actual: ' + (-33554432 << 31));
+}
+
+
+if (-67108864 << 31 !== 0) {
+ $ERROR('#1019: -67108864 << 31 === 0. Actual: ' + (-67108864 << 31));
+}
+
+
+if (-134217728 << 31 !== 0) {
+ $ERROR('#1020: -134217728 << 31 === 0. Actual: ' + (-134217728 << 31));
+}
+
+
+if (-268435456 << 31 !== 0) {
+ $ERROR('#1021: -268435456 << 31 === 0. Actual: ' + (-268435456 << 31));
+}
+
+
+if (-536870912 << 31 !== 0) {
+ $ERROR('#1022: -536870912 << 31 === 0. Actual: ' + (-536870912 << 31));
+}
+
+
+if (-1073741824 << 31 !== 0) {
+ $ERROR('#1023: -1073741824 << 31 === 0. Actual: ' + (-1073741824 << 31));
+}
+
+
+if (-2147483648 << 31 !== 0) {
+ $ERROR('#1024: -2147483648 << 31 === 0. Actual: ' + (-2147483648 << 31));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T3.js
new file mode 100644
index 000000000..21bad729a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T3.js
@@ -0,0 +1,2570 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A4_T3;
+ * @section: 11.7.1;
+ * @assertion: Check operator x << y in distinct points;
+ * @description: ShiftExpression = 2^n - 1, n = 0...15;
+ */
+
+//CHECK
+
+if (0 << 0 !== 0) {
+ $ERROR('#1: 0 << 0 === 0. Actual: ' + (0 << 0));
+}
+
+
+if (1 << 0 !== 1) {
+ $ERROR('#2: 1 << 0 === 1. Actual: ' + (1 << 0));
+}
+
+
+if (3 << 0 !== 3) {
+ $ERROR('#3: 3 << 0 === 3. Actual: ' + (3 << 0));
+}
+
+
+if (7 << 0 !== 7) {
+ $ERROR('#4: 7 << 0 === 7. Actual: ' + (7 << 0));
+}
+
+
+if (15 << 0 !== 15) {
+ $ERROR('#5: 15 << 0 === 15. Actual: ' + (15 << 0));
+}
+
+
+if (31 << 0 !== 31) {
+ $ERROR('#6: 31 << 0 === 31. Actual: ' + (31 << 0));
+}
+
+
+if (63 << 0 !== 63) {
+ $ERROR('#7: 63 << 0 === 63. Actual: ' + (63 << 0));
+}
+
+
+if (127 << 0 !== 127) {
+ $ERROR('#8: 127 << 0 === 127. Actual: ' + (127 << 0));
+}
+
+
+if (255 << 0 !== 255) {
+ $ERROR('#9: 255 << 0 === 255. Actual: ' + (255 << 0));
+}
+
+
+if (511 << 0 !== 511) {
+ $ERROR('#10: 511 << 0 === 511. Actual: ' + (511 << 0));
+}
+
+
+if (1023 << 0 !== 1023) {
+ $ERROR('#11: 1023 << 0 === 1023. Actual: ' + (1023 << 0));
+}
+
+
+if (2047 << 0 !== 2047) {
+ $ERROR('#12: 2047 << 0 === 2047. Actual: ' + (2047 << 0));
+}
+
+
+if (4095 << 0 !== 4095) {
+ $ERROR('#13: 4095 << 0 === 4095. Actual: ' + (4095 << 0));
+}
+
+
+if (8191 << 0 !== 8191) {
+ $ERROR('#14: 8191 << 0 === 8191. Actual: ' + (8191 << 0));
+}
+
+
+if (16383 << 0 !== 16383) {
+ $ERROR('#15: 16383 << 0 === 16383. Actual: ' + (16383 << 0));
+}
+
+
+if (32767 << 0 !== 32767) {
+ $ERROR('#16: 32767 << 0 === 32767. Actual: ' + (32767 << 0));
+}
+
+
+if (65535 << 0 !== 65535) {
+ $ERROR('#17: 65535 << 0 === 65535. Actual: ' + (65535 << 0));
+}
+
+
+if (131071 << 0 !== 131071) {
+ $ERROR('#18: 131071 << 0 === 131071. Actual: ' + (131071 << 0));
+}
+
+
+if (262143 << 0 !== 262143) {
+ $ERROR('#19: 262143 << 0 === 262143. Actual: ' + (262143 << 0));
+}
+
+
+if (524287 << 0 !== 524287) {
+ $ERROR('#20: 524287 << 0 === 524287. Actual: ' + (524287 << 0));
+}
+
+
+if (1048575 << 0 !== 1048575) {
+ $ERROR('#21: 1048575 << 0 === 1048575. Actual: ' + (1048575 << 0));
+}
+
+
+if (2097151 << 0 !== 2097151) {
+ $ERROR('#22: 2097151 << 0 === 2097151. Actual: ' + (2097151 << 0));
+}
+
+
+if (4194303 << 0 !== 4194303) {
+ $ERROR('#23: 4194303 << 0 === 4194303. Actual: ' + (4194303 << 0));
+}
+
+
+if (8388607 << 0 !== 8388607) {
+ $ERROR('#24: 8388607 << 0 === 8388607. Actual: ' + (8388607 << 0));
+}
+
+
+if (16777215 << 0 !== 16777215) {
+ $ERROR('#25: 16777215 << 0 === 16777215. Actual: ' + (16777215 << 0));
+}
+
+
+if (33554431 << 0 !== 33554431) {
+ $ERROR('#26: 33554431 << 0 === 33554431. Actual: ' + (33554431 << 0));
+}
+
+
+if (67108863 << 0 !== 67108863) {
+ $ERROR('#27: 67108863 << 0 === 67108863. Actual: ' + (67108863 << 0));
+}
+
+
+if (134217727 << 0 !== 134217727) {
+ $ERROR('#28: 134217727 << 0 === 134217727. Actual: ' + (134217727 << 0));
+}
+
+
+if (268435455 << 0 !== 268435455) {
+ $ERROR('#29: 268435455 << 0 === 268435455. Actual: ' + (268435455 << 0));
+}
+
+
+if (536870911 << 0 !== 536870911) {
+ $ERROR('#30: 536870911 << 0 === 536870911. Actual: ' + (536870911 << 0));
+}
+
+
+if (1073741823 << 0 !== 1073741823) {
+ $ERROR('#31: 1073741823 << 0 === 1073741823. Actual: ' + (1073741823 << 0));
+}
+
+
+if (2147483647 << 0 !== 2147483647) {
+ $ERROR('#32: 2147483647 << 0 === 2147483647. Actual: ' + (2147483647 << 0));
+}
+
+
+if (0 << 1 !== 0) {
+ $ERROR('#33: 0 << 1 === 0. Actual: ' + (0 << 1));
+}
+
+
+if (1 << 1 !== 2) {
+ $ERROR('#34: 1 << 1 === 2. Actual: ' + (1 << 1));
+}
+
+
+if (3 << 1 !== 6) {
+ $ERROR('#35: 3 << 1 === 6. Actual: ' + (3 << 1));
+}
+
+
+if (7 << 1 !== 14) {
+ $ERROR('#36: 7 << 1 === 14. Actual: ' + (7 << 1));
+}
+
+
+if (15 << 1 !== 30) {
+ $ERROR('#37: 15 << 1 === 30. Actual: ' + (15 << 1));
+}
+
+
+if (31 << 1 !== 62) {
+ $ERROR('#38: 31 << 1 === 62. Actual: ' + (31 << 1));
+}
+
+
+if (63 << 1 !== 126) {
+ $ERROR('#39: 63 << 1 === 126. Actual: ' + (63 << 1));
+}
+
+
+if (127 << 1 !== 254) {
+ $ERROR('#40: 127 << 1 === 254. Actual: ' + (127 << 1));
+}
+
+
+if (255 << 1 !== 510) {
+ $ERROR('#41: 255 << 1 === 510. Actual: ' + (255 << 1));
+}
+
+
+if (511 << 1 !== 1022) {
+ $ERROR('#42: 511 << 1 === 1022. Actual: ' + (511 << 1));
+}
+
+
+if (1023 << 1 !== 2046) {
+ $ERROR('#43: 1023 << 1 === 2046. Actual: ' + (1023 << 1));
+}
+
+
+if (2047 << 1 !== 4094) {
+ $ERROR('#44: 2047 << 1 === 4094. Actual: ' + (2047 << 1));
+}
+
+
+if (4095 << 1 !== 8190) {
+ $ERROR('#45: 4095 << 1 === 8190. Actual: ' + (4095 << 1));
+}
+
+
+if (8191 << 1 !== 16382) {
+ $ERROR('#46: 8191 << 1 === 16382. Actual: ' + (8191 << 1));
+}
+
+
+if (16383 << 1 !== 32766) {
+ $ERROR('#47: 16383 << 1 === 32766. Actual: ' + (16383 << 1));
+}
+
+
+if (32767 << 1 !== 65534) {
+ $ERROR('#48: 32767 << 1 === 65534. Actual: ' + (32767 << 1));
+}
+
+
+if (65535 << 1 !== 131070) {
+ $ERROR('#49: 65535 << 1 === 131070. Actual: ' + (65535 << 1));
+}
+
+
+if (131071 << 1 !== 262142) {
+ $ERROR('#50: 131071 << 1 === 262142. Actual: ' + (131071 << 1));
+}
+
+
+if (262143 << 1 !== 524286) {
+ $ERROR('#51: 262143 << 1 === 524286. Actual: ' + (262143 << 1));
+}
+
+
+if (524287 << 1 !== 1048574) {
+ $ERROR('#52: 524287 << 1 === 1048574. Actual: ' + (524287 << 1));
+}
+
+
+if (1048575 << 1 !== 2097150) {
+ $ERROR('#53: 1048575 << 1 === 2097150. Actual: ' + (1048575 << 1));
+}
+
+
+if (2097151 << 1 !== 4194302) {
+ $ERROR('#54: 2097151 << 1 === 4194302. Actual: ' + (2097151 << 1));
+}
+
+
+if (4194303 << 1 !== 8388606) {
+ $ERROR('#55: 4194303 << 1 === 8388606. Actual: ' + (4194303 << 1));
+}
+
+
+if (8388607 << 1 !== 16777214) {
+ $ERROR('#56: 8388607 << 1 === 16777214. Actual: ' + (8388607 << 1));
+}
+
+
+if (16777215 << 1 !== 33554430) {
+ $ERROR('#57: 16777215 << 1 === 33554430. Actual: ' + (16777215 << 1));
+}
+
+
+if (33554431 << 1 !== 67108862) {
+ $ERROR('#58: 33554431 << 1 === 67108862. Actual: ' + (33554431 << 1));
+}
+
+
+if (67108863 << 1 !== 134217726) {
+ $ERROR('#59: 67108863 << 1 === 134217726. Actual: ' + (67108863 << 1));
+}
+
+
+if (134217727 << 1 !== 268435454) {
+ $ERROR('#60: 134217727 << 1 === 268435454. Actual: ' + (134217727 << 1));
+}
+
+
+if (268435455 << 1 !== 536870910) {
+ $ERROR('#61: 268435455 << 1 === 536870910. Actual: ' + (268435455 << 1));
+}
+
+
+if (536870911 << 1 !== 1073741822) {
+ $ERROR('#62: 536870911 << 1 === 1073741822. Actual: ' + (536870911 << 1));
+}
+
+
+if (1073741823 << 1 !== 2147483646) {
+ $ERROR('#63: 1073741823 << 1 === 2147483646. Actual: ' + (1073741823 << 1));
+}
+
+
+if (2147483647 << 1 !== -2) {
+ $ERROR('#64: 2147483647 << 1 === -2. Actual: ' + (2147483647 << 1));
+}
+
+
+if (0 << 2 !== 0) {
+ $ERROR('#65: 0 << 2 === 0. Actual: ' + (0 << 2));
+}
+
+
+if (1 << 2 !== 4) {
+ $ERROR('#66: 1 << 2 === 4. Actual: ' + (1 << 2));
+}
+
+
+if (3 << 2 !== 12) {
+ $ERROR('#67: 3 << 2 === 12. Actual: ' + (3 << 2));
+}
+
+
+if (7 << 2 !== 28) {
+ $ERROR('#68: 7 << 2 === 28. Actual: ' + (7 << 2));
+}
+
+
+if (15 << 2 !== 60) {
+ $ERROR('#69: 15 << 2 === 60. Actual: ' + (15 << 2));
+}
+
+
+if (31 << 2 !== 124) {
+ $ERROR('#70: 31 << 2 === 124. Actual: ' + (31 << 2));
+}
+
+
+if (63 << 2 !== 252) {
+ $ERROR('#71: 63 << 2 === 252. Actual: ' + (63 << 2));
+}
+
+
+if (127 << 2 !== 508) {
+ $ERROR('#72: 127 << 2 === 508. Actual: ' + (127 << 2));
+}
+
+
+if (255 << 2 !== 1020) {
+ $ERROR('#73: 255 << 2 === 1020. Actual: ' + (255 << 2));
+}
+
+
+if (511 << 2 !== 2044) {
+ $ERROR('#74: 511 << 2 === 2044. Actual: ' + (511 << 2));
+}
+
+
+if (1023 << 2 !== 4092) {
+ $ERROR('#75: 1023 << 2 === 4092. Actual: ' + (1023 << 2));
+}
+
+
+if (2047 << 2 !== 8188) {
+ $ERROR('#76: 2047 << 2 === 8188. Actual: ' + (2047 << 2));
+}
+
+
+if (4095 << 2 !== 16380) {
+ $ERROR('#77: 4095 << 2 === 16380. Actual: ' + (4095 << 2));
+}
+
+
+if (8191 << 2 !== 32764) {
+ $ERROR('#78: 8191 << 2 === 32764. Actual: ' + (8191 << 2));
+}
+
+
+if (16383 << 2 !== 65532) {
+ $ERROR('#79: 16383 << 2 === 65532. Actual: ' + (16383 << 2));
+}
+
+
+if (32767 << 2 !== 131068) {
+ $ERROR('#80: 32767 << 2 === 131068. Actual: ' + (32767 << 2));
+}
+
+
+if (65535 << 2 !== 262140) {
+ $ERROR('#81: 65535 << 2 === 262140. Actual: ' + (65535 << 2));
+}
+
+
+if (131071 << 2 !== 524284) {
+ $ERROR('#82: 131071 << 2 === 524284. Actual: ' + (131071 << 2));
+}
+
+
+if (262143 << 2 !== 1048572) {
+ $ERROR('#83: 262143 << 2 === 1048572. Actual: ' + (262143 << 2));
+}
+
+
+if (524287 << 2 !== 2097148) {
+ $ERROR('#84: 524287 << 2 === 2097148. Actual: ' + (524287 << 2));
+}
+
+
+if (1048575 << 2 !== 4194300) {
+ $ERROR('#85: 1048575 << 2 === 4194300. Actual: ' + (1048575 << 2));
+}
+
+
+if (2097151 << 2 !== 8388604) {
+ $ERROR('#86: 2097151 << 2 === 8388604. Actual: ' + (2097151 << 2));
+}
+
+
+if (4194303 << 2 !== 16777212) {
+ $ERROR('#87: 4194303 << 2 === 16777212. Actual: ' + (4194303 << 2));
+}
+
+
+if (8388607 << 2 !== 33554428) {
+ $ERROR('#88: 8388607 << 2 === 33554428. Actual: ' + (8388607 << 2));
+}
+
+
+if (16777215 << 2 !== 67108860) {
+ $ERROR('#89: 16777215 << 2 === 67108860. Actual: ' + (16777215 << 2));
+}
+
+
+if (33554431 << 2 !== 134217724) {
+ $ERROR('#90: 33554431 << 2 === 134217724. Actual: ' + (33554431 << 2));
+}
+
+
+if (67108863 << 2 !== 268435452) {
+ $ERROR('#91: 67108863 << 2 === 268435452. Actual: ' + (67108863 << 2));
+}
+
+
+if (134217727 << 2 !== 536870908) {
+ $ERROR('#92: 134217727 << 2 === 536870908. Actual: ' + (134217727 << 2));
+}
+
+
+if (268435455 << 2 !== 1073741820) {
+ $ERROR('#93: 268435455 << 2 === 1073741820. Actual: ' + (268435455 << 2));
+}
+
+
+if (536870911 << 2 !== 2147483644) {
+ $ERROR('#94: 536870911 << 2 === 2147483644. Actual: ' + (536870911 << 2));
+}
+
+
+if (1073741823 << 2 !== -4) {
+ $ERROR('#95: 1073741823 << 2 === -4. Actual: ' + (1073741823 << 2));
+}
+
+
+if (2147483647 << 2 !== -4) {
+ $ERROR('#96: 2147483647 << 2 === -4. Actual: ' + (2147483647 << 2));
+}
+
+
+if (0 << 3 !== 0) {
+ $ERROR('#97: 0 << 3 === 0. Actual: ' + (0 << 3));
+}
+
+
+if (1 << 3 !== 8) {
+ $ERROR('#98: 1 << 3 === 8. Actual: ' + (1 << 3));
+}
+
+
+if (3 << 3 !== 24) {
+ $ERROR('#99: 3 << 3 === 24. Actual: ' + (3 << 3));
+}
+
+
+if (7 << 3 !== 56) {
+ $ERROR('#100: 7 << 3 === 56. Actual: ' + (7 << 3));
+}
+
+
+if (15 << 3 !== 120) {
+ $ERROR('#101: 15 << 3 === 120. Actual: ' + (15 << 3));
+}
+
+
+if (31 << 3 !== 248) {
+ $ERROR('#102: 31 << 3 === 248. Actual: ' + (31 << 3));
+}
+
+
+if (63 << 3 !== 504) {
+ $ERROR('#103: 63 << 3 === 504. Actual: ' + (63 << 3));
+}
+
+
+if (127 << 3 !== 1016) {
+ $ERROR('#104: 127 << 3 === 1016. Actual: ' + (127 << 3));
+}
+
+
+if (255 << 3 !== 2040) {
+ $ERROR('#105: 255 << 3 === 2040. Actual: ' + (255 << 3));
+}
+
+
+if (511 << 3 !== 4088) {
+ $ERROR('#106: 511 << 3 === 4088. Actual: ' + (511 << 3));
+}
+
+
+if (1023 << 3 !== 8184) {
+ $ERROR('#107: 1023 << 3 === 8184. Actual: ' + (1023 << 3));
+}
+
+
+if (2047 << 3 !== 16376) {
+ $ERROR('#108: 2047 << 3 === 16376. Actual: ' + (2047 << 3));
+}
+
+
+if (4095 << 3 !== 32760) {
+ $ERROR('#109: 4095 << 3 === 32760. Actual: ' + (4095 << 3));
+}
+
+
+if (8191 << 3 !== 65528) {
+ $ERROR('#110: 8191 << 3 === 65528. Actual: ' + (8191 << 3));
+}
+
+
+if (16383 << 3 !== 131064) {
+ $ERROR('#111: 16383 << 3 === 131064. Actual: ' + (16383 << 3));
+}
+
+
+if (32767 << 3 !== 262136) {
+ $ERROR('#112: 32767 << 3 === 262136. Actual: ' + (32767 << 3));
+}
+
+
+if (65535 << 3 !== 524280) {
+ $ERROR('#113: 65535 << 3 === 524280. Actual: ' + (65535 << 3));
+}
+
+
+if (131071 << 3 !== 1048568) {
+ $ERROR('#114: 131071 << 3 === 1048568. Actual: ' + (131071 << 3));
+}
+
+
+if (262143 << 3 !== 2097144) {
+ $ERROR('#115: 262143 << 3 === 2097144. Actual: ' + (262143 << 3));
+}
+
+
+if (524287 << 3 !== 4194296) {
+ $ERROR('#116: 524287 << 3 === 4194296. Actual: ' + (524287 << 3));
+}
+
+
+if (1048575 << 3 !== 8388600) {
+ $ERROR('#117: 1048575 << 3 === 8388600. Actual: ' + (1048575 << 3));
+}
+
+
+if (2097151 << 3 !== 16777208) {
+ $ERROR('#118: 2097151 << 3 === 16777208. Actual: ' + (2097151 << 3));
+}
+
+
+if (4194303 << 3 !== 33554424) {
+ $ERROR('#119: 4194303 << 3 === 33554424. Actual: ' + (4194303 << 3));
+}
+
+
+if (8388607 << 3 !== 67108856) {
+ $ERROR('#120: 8388607 << 3 === 67108856. Actual: ' + (8388607 << 3));
+}
+
+
+if (16777215 << 3 !== 134217720) {
+ $ERROR('#121: 16777215 << 3 === 134217720. Actual: ' + (16777215 << 3));
+}
+
+
+if (33554431 << 3 !== 268435448) {
+ $ERROR('#122: 33554431 << 3 === 268435448. Actual: ' + (33554431 << 3));
+}
+
+
+if (67108863 << 3 !== 536870904) {
+ $ERROR('#123: 67108863 << 3 === 536870904. Actual: ' + (67108863 << 3));
+}
+
+
+if (134217727 << 3 !== 1073741816) {
+ $ERROR('#124: 134217727 << 3 === 1073741816. Actual: ' + (134217727 << 3));
+}
+
+
+if (268435455 << 3 !== 2147483640) {
+ $ERROR('#125: 268435455 << 3 === 2147483640. Actual: ' + (268435455 << 3));
+}
+
+
+if (536870911 << 3 !== -8) {
+ $ERROR('#126: 536870911 << 3 === -8. Actual: ' + (536870911 << 3));
+}
+
+
+if (1073741823 << 3 !== -8) {
+ $ERROR('#127: 1073741823 << 3 === -8. Actual: ' + (1073741823 << 3));
+}
+
+
+if (2147483647 << 3 !== -8) {
+ $ERROR('#128: 2147483647 << 3 === -8. Actual: ' + (2147483647 << 3));
+}
+
+
+if (0 << 4 !== 0) {
+ $ERROR('#129: 0 << 4 === 0. Actual: ' + (0 << 4));
+}
+
+
+if (1 << 4 !== 16) {
+ $ERROR('#130: 1 << 4 === 16. Actual: ' + (1 << 4));
+}
+
+
+if (3 << 4 !== 48) {
+ $ERROR('#131: 3 << 4 === 48. Actual: ' + (3 << 4));
+}
+
+
+if (7 << 4 !== 112) {
+ $ERROR('#132: 7 << 4 === 112. Actual: ' + (7 << 4));
+}
+
+
+if (15 << 4 !== 240) {
+ $ERROR('#133: 15 << 4 === 240. Actual: ' + (15 << 4));
+}
+
+
+if (31 << 4 !== 496) {
+ $ERROR('#134: 31 << 4 === 496. Actual: ' + (31 << 4));
+}
+
+
+if (63 << 4 !== 1008) {
+ $ERROR('#135: 63 << 4 === 1008. Actual: ' + (63 << 4));
+}
+
+
+if (127 << 4 !== 2032) {
+ $ERROR('#136: 127 << 4 === 2032. Actual: ' + (127 << 4));
+}
+
+
+if (255 << 4 !== 4080) {
+ $ERROR('#137: 255 << 4 === 4080. Actual: ' + (255 << 4));
+}
+
+
+if (511 << 4 !== 8176) {
+ $ERROR('#138: 511 << 4 === 8176. Actual: ' + (511 << 4));
+}
+
+
+if (1023 << 4 !== 16368) {
+ $ERROR('#139: 1023 << 4 === 16368. Actual: ' + (1023 << 4));
+}
+
+
+if (2047 << 4 !== 32752) {
+ $ERROR('#140: 2047 << 4 === 32752. Actual: ' + (2047 << 4));
+}
+
+
+if (4095 << 4 !== 65520) {
+ $ERROR('#141: 4095 << 4 === 65520. Actual: ' + (4095 << 4));
+}
+
+
+if (8191 << 4 !== 131056) {
+ $ERROR('#142: 8191 << 4 === 131056. Actual: ' + (8191 << 4));
+}
+
+
+if (16383 << 4 !== 262128) {
+ $ERROR('#143: 16383 << 4 === 262128. Actual: ' + (16383 << 4));
+}
+
+
+if (32767 << 4 !== 524272) {
+ $ERROR('#144: 32767 << 4 === 524272. Actual: ' + (32767 << 4));
+}
+
+
+if (65535 << 4 !== 1048560) {
+ $ERROR('#145: 65535 << 4 === 1048560. Actual: ' + (65535 << 4));
+}
+
+
+if (131071 << 4 !== 2097136) {
+ $ERROR('#146: 131071 << 4 === 2097136. Actual: ' + (131071 << 4));
+}
+
+
+if (262143 << 4 !== 4194288) {
+ $ERROR('#147: 262143 << 4 === 4194288. Actual: ' + (262143 << 4));
+}
+
+
+if (524287 << 4 !== 8388592) {
+ $ERROR('#148: 524287 << 4 === 8388592. Actual: ' + (524287 << 4));
+}
+
+
+if (1048575 << 4 !== 16777200) {
+ $ERROR('#149: 1048575 << 4 === 16777200. Actual: ' + (1048575 << 4));
+}
+
+
+if (2097151 << 4 !== 33554416) {
+ $ERROR('#150: 2097151 << 4 === 33554416. Actual: ' + (2097151 << 4));
+}
+
+
+if (4194303 << 4 !== 67108848) {
+ $ERROR('#151: 4194303 << 4 === 67108848. Actual: ' + (4194303 << 4));
+}
+
+
+if (8388607 << 4 !== 134217712) {
+ $ERROR('#152: 8388607 << 4 === 134217712. Actual: ' + (8388607 << 4));
+}
+
+
+if (16777215 << 4 !== 268435440) {
+ $ERROR('#153: 16777215 << 4 === 268435440. Actual: ' + (16777215 << 4));
+}
+
+
+if (33554431 << 4 !== 536870896) {
+ $ERROR('#154: 33554431 << 4 === 536870896. Actual: ' + (33554431 << 4));
+}
+
+
+if (67108863 << 4 !== 1073741808) {
+ $ERROR('#155: 67108863 << 4 === 1073741808. Actual: ' + (67108863 << 4));
+}
+
+
+if (134217727 << 4 !== 2147483632) {
+ $ERROR('#156: 134217727 << 4 === 2147483632. Actual: ' + (134217727 << 4));
+}
+
+
+if (268435455 << 4 !== -16) {
+ $ERROR('#157: 268435455 << 4 === -16. Actual: ' + (268435455 << 4));
+}
+
+
+if (536870911 << 4 !== -16) {
+ $ERROR('#158: 536870911 << 4 === -16. Actual: ' + (536870911 << 4));
+}
+
+
+if (1073741823 << 4 !== -16) {
+ $ERROR('#159: 1073741823 << 4 === -16. Actual: ' + (1073741823 << 4));
+}
+
+
+if (2147483647 << 4 !== -16) {
+ $ERROR('#160: 2147483647 << 4 === -16. Actual: ' + (2147483647 << 4));
+}
+
+
+if (0 << 5 !== 0) {
+ $ERROR('#161: 0 << 5 === 0. Actual: ' + (0 << 5));
+}
+
+
+if (1 << 5 !== 32) {
+ $ERROR('#162: 1 << 5 === 32. Actual: ' + (1 << 5));
+}
+
+
+if (3 << 5 !== 96) {
+ $ERROR('#163: 3 << 5 === 96. Actual: ' + (3 << 5));
+}
+
+
+if (7 << 5 !== 224) {
+ $ERROR('#164: 7 << 5 === 224. Actual: ' + (7 << 5));
+}
+
+
+if (15 << 5 !== 480) {
+ $ERROR('#165: 15 << 5 === 480. Actual: ' + (15 << 5));
+}
+
+
+if (31 << 5 !== 992) {
+ $ERROR('#166: 31 << 5 === 992. Actual: ' + (31 << 5));
+}
+
+
+if (63 << 5 !== 2016) {
+ $ERROR('#167: 63 << 5 === 2016. Actual: ' + (63 << 5));
+}
+
+
+if (127 << 5 !== 4064) {
+ $ERROR('#168: 127 << 5 === 4064. Actual: ' + (127 << 5));
+}
+
+
+if (255 << 5 !== 8160) {
+ $ERROR('#169: 255 << 5 === 8160. Actual: ' + (255 << 5));
+}
+
+
+if (511 << 5 !== 16352) {
+ $ERROR('#170: 511 << 5 === 16352. Actual: ' + (511 << 5));
+}
+
+
+if (1023 << 5 !== 32736) {
+ $ERROR('#171: 1023 << 5 === 32736. Actual: ' + (1023 << 5));
+}
+
+
+if (2047 << 5 !== 65504) {
+ $ERROR('#172: 2047 << 5 === 65504. Actual: ' + (2047 << 5));
+}
+
+
+if (4095 << 5 !== 131040) {
+ $ERROR('#173: 4095 << 5 === 131040. Actual: ' + (4095 << 5));
+}
+
+
+if (8191 << 5 !== 262112) {
+ $ERROR('#174: 8191 << 5 === 262112. Actual: ' + (8191 << 5));
+}
+
+
+if (16383 << 5 !== 524256) {
+ $ERROR('#175: 16383 << 5 === 524256. Actual: ' + (16383 << 5));
+}
+
+
+if (32767 << 5 !== 1048544) {
+ $ERROR('#176: 32767 << 5 === 1048544. Actual: ' + (32767 << 5));
+}
+
+
+if (65535 << 5 !== 2097120) {
+ $ERROR('#177: 65535 << 5 === 2097120. Actual: ' + (65535 << 5));
+}
+
+
+if (131071 << 5 !== 4194272) {
+ $ERROR('#178: 131071 << 5 === 4194272. Actual: ' + (131071 << 5));
+}
+
+
+if (262143 << 5 !== 8388576) {
+ $ERROR('#179: 262143 << 5 === 8388576. Actual: ' + (262143 << 5));
+}
+
+
+if (524287 << 5 !== 16777184) {
+ $ERROR('#180: 524287 << 5 === 16777184. Actual: ' + (524287 << 5));
+}
+
+
+if (1048575 << 5 !== 33554400) {
+ $ERROR('#181: 1048575 << 5 === 33554400. Actual: ' + (1048575 << 5));
+}
+
+
+if (2097151 << 5 !== 67108832) {
+ $ERROR('#182: 2097151 << 5 === 67108832. Actual: ' + (2097151 << 5));
+}
+
+
+if (4194303 << 5 !== 134217696) {
+ $ERROR('#183: 4194303 << 5 === 134217696. Actual: ' + (4194303 << 5));
+}
+
+
+if (8388607 << 5 !== 268435424) {
+ $ERROR('#184: 8388607 << 5 === 268435424. Actual: ' + (8388607 << 5));
+}
+
+
+if (16777215 << 5 !== 536870880) {
+ $ERROR('#185: 16777215 << 5 === 536870880. Actual: ' + (16777215 << 5));
+}
+
+
+if (33554431 << 5 !== 1073741792) {
+ $ERROR('#186: 33554431 << 5 === 1073741792. Actual: ' + (33554431 << 5));
+}
+
+
+if (67108863 << 5 !== 2147483616) {
+ $ERROR('#187: 67108863 << 5 === 2147483616. Actual: ' + (67108863 << 5));
+}
+
+
+if (134217727 << 5 !== -32) {
+ $ERROR('#188: 134217727 << 5 === -32. Actual: ' + (134217727 << 5));
+}
+
+
+if (268435455 << 5 !== -32) {
+ $ERROR('#189: 268435455 << 5 === -32. Actual: ' + (268435455 << 5));
+}
+
+
+if (536870911 << 5 !== -32) {
+ $ERROR('#190: 536870911 << 5 === -32. Actual: ' + (536870911 << 5));
+}
+
+
+if (1073741823 << 5 !== -32) {
+ $ERROR('#191: 1073741823 << 5 === -32. Actual: ' + (1073741823 << 5));
+}
+
+
+if (2147483647 << 5 !== -32) {
+ $ERROR('#192: 2147483647 << 5 === -32. Actual: ' + (2147483647 << 5));
+}
+
+
+if (0 << 6 !== 0) {
+ $ERROR('#193: 0 << 6 === 0. Actual: ' + (0 << 6));
+}
+
+
+if (1 << 6 !== 64) {
+ $ERROR('#194: 1 << 6 === 64. Actual: ' + (1 << 6));
+}
+
+
+if (3 << 6 !== 192) {
+ $ERROR('#195: 3 << 6 === 192. Actual: ' + (3 << 6));
+}
+
+
+if (7 << 6 !== 448) {
+ $ERROR('#196: 7 << 6 === 448. Actual: ' + (7 << 6));
+}
+
+
+if (15 << 6 !== 960) {
+ $ERROR('#197: 15 << 6 === 960. Actual: ' + (15 << 6));
+}
+
+
+if (31 << 6 !== 1984) {
+ $ERROR('#198: 31 << 6 === 1984. Actual: ' + (31 << 6));
+}
+
+
+if (63 << 6 !== 4032) {
+ $ERROR('#199: 63 << 6 === 4032. Actual: ' + (63 << 6));
+}
+
+
+if (127 << 6 !== 8128) {
+ $ERROR('#200: 127 << 6 === 8128. Actual: ' + (127 << 6));
+}
+
+
+if (255 << 6 !== 16320) {
+ $ERROR('#201: 255 << 6 === 16320. Actual: ' + (255 << 6));
+}
+
+
+if (511 << 6 !== 32704) {
+ $ERROR('#202: 511 << 6 === 32704. Actual: ' + (511 << 6));
+}
+
+
+if (1023 << 6 !== 65472) {
+ $ERROR('#203: 1023 << 6 === 65472. Actual: ' + (1023 << 6));
+}
+
+
+if (2047 << 6 !== 131008) {
+ $ERROR('#204: 2047 << 6 === 131008. Actual: ' + (2047 << 6));
+}
+
+
+if (4095 << 6 !== 262080) {
+ $ERROR('#205: 4095 << 6 === 262080. Actual: ' + (4095 << 6));
+}
+
+
+if (8191 << 6 !== 524224) {
+ $ERROR('#206: 8191 << 6 === 524224. Actual: ' + (8191 << 6));
+}
+
+
+if (16383 << 6 !== 1048512) {
+ $ERROR('#207: 16383 << 6 === 1048512. Actual: ' + (16383 << 6));
+}
+
+
+if (32767 << 6 !== 2097088) {
+ $ERROR('#208: 32767 << 6 === 2097088. Actual: ' + (32767 << 6));
+}
+
+
+if (65535 << 6 !== 4194240) {
+ $ERROR('#209: 65535 << 6 === 4194240. Actual: ' + (65535 << 6));
+}
+
+
+if (131071 << 6 !== 8388544) {
+ $ERROR('#210: 131071 << 6 === 8388544. Actual: ' + (131071 << 6));
+}
+
+
+if (262143 << 6 !== 16777152) {
+ $ERROR('#211: 262143 << 6 === 16777152. Actual: ' + (262143 << 6));
+}
+
+
+if (524287 << 6 !== 33554368) {
+ $ERROR('#212: 524287 << 6 === 33554368. Actual: ' + (524287 << 6));
+}
+
+
+if (1048575 << 6 !== 67108800) {
+ $ERROR('#213: 1048575 << 6 === 67108800. Actual: ' + (1048575 << 6));
+}
+
+
+if (2097151 << 6 !== 134217664) {
+ $ERROR('#214: 2097151 << 6 === 134217664. Actual: ' + (2097151 << 6));
+}
+
+
+if (4194303 << 6 !== 268435392) {
+ $ERROR('#215: 4194303 << 6 === 268435392. Actual: ' + (4194303 << 6));
+}
+
+
+if (8388607 << 6 !== 536870848) {
+ $ERROR('#216: 8388607 << 6 === 536870848. Actual: ' + (8388607 << 6));
+}
+
+
+if (16777215 << 6 !== 1073741760) {
+ $ERROR('#217: 16777215 << 6 === 1073741760. Actual: ' + (16777215 << 6));
+}
+
+
+if (33554431 << 6 !== 2147483584) {
+ $ERROR('#218: 33554431 << 6 === 2147483584. Actual: ' + (33554431 << 6));
+}
+
+
+if (67108863 << 6 !== -64) {
+ $ERROR('#219: 67108863 << 6 === -64. Actual: ' + (67108863 << 6));
+}
+
+
+if (134217727 << 6 !== -64) {
+ $ERROR('#220: 134217727 << 6 === -64. Actual: ' + (134217727 << 6));
+}
+
+
+if (268435455 << 6 !== -64) {
+ $ERROR('#221: 268435455 << 6 === -64. Actual: ' + (268435455 << 6));
+}
+
+
+if (536870911 << 6 !== -64) {
+ $ERROR('#222: 536870911 << 6 === -64. Actual: ' + (536870911 << 6));
+}
+
+
+if (1073741823 << 6 !== -64) {
+ $ERROR('#223: 1073741823 << 6 === -64. Actual: ' + (1073741823 << 6));
+}
+
+
+if (2147483647 << 6 !== -64) {
+ $ERROR('#224: 2147483647 << 6 === -64. Actual: ' + (2147483647 << 6));
+}
+
+
+if (0 << 7 !== 0) {
+ $ERROR('#225: 0 << 7 === 0. Actual: ' + (0 << 7));
+}
+
+
+if (1 << 7 !== 128) {
+ $ERROR('#226: 1 << 7 === 128. Actual: ' + (1 << 7));
+}
+
+
+if (3 << 7 !== 384) {
+ $ERROR('#227: 3 << 7 === 384. Actual: ' + (3 << 7));
+}
+
+
+if (7 << 7 !== 896) {
+ $ERROR('#228: 7 << 7 === 896. Actual: ' + (7 << 7));
+}
+
+
+if (15 << 7 !== 1920) {
+ $ERROR('#229: 15 << 7 === 1920. Actual: ' + (15 << 7));
+}
+
+
+if (31 << 7 !== 3968) {
+ $ERROR('#230: 31 << 7 === 3968. Actual: ' + (31 << 7));
+}
+
+
+if (63 << 7 !== 8064) {
+ $ERROR('#231: 63 << 7 === 8064. Actual: ' + (63 << 7));
+}
+
+
+if (127 << 7 !== 16256) {
+ $ERROR('#232: 127 << 7 === 16256. Actual: ' + (127 << 7));
+}
+
+
+if (255 << 7 !== 32640) {
+ $ERROR('#233: 255 << 7 === 32640. Actual: ' + (255 << 7));
+}
+
+
+if (511 << 7 !== 65408) {
+ $ERROR('#234: 511 << 7 === 65408. Actual: ' + (511 << 7));
+}
+
+
+if (1023 << 7 !== 130944) {
+ $ERROR('#235: 1023 << 7 === 130944. Actual: ' + (1023 << 7));
+}
+
+
+if (2047 << 7 !== 262016) {
+ $ERROR('#236: 2047 << 7 === 262016. Actual: ' + (2047 << 7));
+}
+
+
+if (4095 << 7 !== 524160) {
+ $ERROR('#237: 4095 << 7 === 524160. Actual: ' + (4095 << 7));
+}
+
+
+if (8191 << 7 !== 1048448) {
+ $ERROR('#238: 8191 << 7 === 1048448. Actual: ' + (8191 << 7));
+}
+
+
+if (16383 << 7 !== 2097024) {
+ $ERROR('#239: 16383 << 7 === 2097024. Actual: ' + (16383 << 7));
+}
+
+
+if (32767 << 7 !== 4194176) {
+ $ERROR('#240: 32767 << 7 === 4194176. Actual: ' + (32767 << 7));
+}
+
+
+if (65535 << 7 !== 8388480) {
+ $ERROR('#241: 65535 << 7 === 8388480. Actual: ' + (65535 << 7));
+}
+
+
+if (131071 << 7 !== 16777088) {
+ $ERROR('#242: 131071 << 7 === 16777088. Actual: ' + (131071 << 7));
+}
+
+
+if (262143 << 7 !== 33554304) {
+ $ERROR('#243: 262143 << 7 === 33554304. Actual: ' + (262143 << 7));
+}
+
+
+if (524287 << 7 !== 67108736) {
+ $ERROR('#244: 524287 << 7 === 67108736. Actual: ' + (524287 << 7));
+}
+
+
+if (1048575 << 7 !== 134217600) {
+ $ERROR('#245: 1048575 << 7 === 134217600. Actual: ' + (1048575 << 7));
+}
+
+
+if (2097151 << 7 !== 268435328) {
+ $ERROR('#246: 2097151 << 7 === 268435328. Actual: ' + (2097151 << 7));
+}
+
+
+if (4194303 << 7 !== 536870784) {
+ $ERROR('#247: 4194303 << 7 === 536870784. Actual: ' + (4194303 << 7));
+}
+
+
+if (8388607 << 7 !== 1073741696) {
+ $ERROR('#248: 8388607 << 7 === 1073741696. Actual: ' + (8388607 << 7));
+}
+
+
+if (16777215 << 7 !== 2147483520) {
+ $ERROR('#249: 16777215 << 7 === 2147483520. Actual: ' + (16777215 << 7));
+}
+
+
+if (33554431 << 7 !== -128) {
+ $ERROR('#250: 33554431 << 7 === -128. Actual: ' + (33554431 << 7));
+}
+
+
+if (67108863 << 7 !== -128) {
+ $ERROR('#251: 67108863 << 7 === -128. Actual: ' + (67108863 << 7));
+}
+
+
+if (134217727 << 7 !== -128) {
+ $ERROR('#252: 134217727 << 7 === -128. Actual: ' + (134217727 << 7));
+}
+
+
+if (268435455 << 7 !== -128) {
+ $ERROR('#253: 268435455 << 7 === -128. Actual: ' + (268435455 << 7));
+}
+
+
+if (536870911 << 7 !== -128) {
+ $ERROR('#254: 536870911 << 7 === -128. Actual: ' + (536870911 << 7));
+}
+
+
+if (1073741823 << 7 !== -128) {
+ $ERROR('#255: 1073741823 << 7 === -128. Actual: ' + (1073741823 << 7));
+}
+
+
+if (2147483647 << 7 !== -128) {
+ $ERROR('#256: 2147483647 << 7 === -128. Actual: ' + (2147483647 << 7));
+}
+
+
+if (0 << 8 !== 0) {
+ $ERROR('#257: 0 << 8 === 0. Actual: ' + (0 << 8));
+}
+
+
+if (1 << 8 !== 256) {
+ $ERROR('#258: 1 << 8 === 256. Actual: ' + (1 << 8));
+}
+
+
+if (3 << 8 !== 768) {
+ $ERROR('#259: 3 << 8 === 768. Actual: ' + (3 << 8));
+}
+
+
+if (7 << 8 !== 1792) {
+ $ERROR('#260: 7 << 8 === 1792. Actual: ' + (7 << 8));
+}
+
+
+if (15 << 8 !== 3840) {
+ $ERROR('#261: 15 << 8 === 3840. Actual: ' + (15 << 8));
+}
+
+
+if (31 << 8 !== 7936) {
+ $ERROR('#262: 31 << 8 === 7936. Actual: ' + (31 << 8));
+}
+
+
+if (63 << 8 !== 16128) {
+ $ERROR('#263: 63 << 8 === 16128. Actual: ' + (63 << 8));
+}
+
+
+if (127 << 8 !== 32512) {
+ $ERROR('#264: 127 << 8 === 32512. Actual: ' + (127 << 8));
+}
+
+
+if (255 << 8 !== 65280) {
+ $ERROR('#265: 255 << 8 === 65280. Actual: ' + (255 << 8));
+}
+
+
+if (511 << 8 !== 130816) {
+ $ERROR('#266: 511 << 8 === 130816. Actual: ' + (511 << 8));
+}
+
+
+if (1023 << 8 !== 261888) {
+ $ERROR('#267: 1023 << 8 === 261888. Actual: ' + (1023 << 8));
+}
+
+
+if (2047 << 8 !== 524032) {
+ $ERROR('#268: 2047 << 8 === 524032. Actual: ' + (2047 << 8));
+}
+
+
+if (4095 << 8 !== 1048320) {
+ $ERROR('#269: 4095 << 8 === 1048320. Actual: ' + (4095 << 8));
+}
+
+
+if (8191 << 8 !== 2096896) {
+ $ERROR('#270: 8191 << 8 === 2096896. Actual: ' + (8191 << 8));
+}
+
+
+if (16383 << 8 !== 4194048) {
+ $ERROR('#271: 16383 << 8 === 4194048. Actual: ' + (16383 << 8));
+}
+
+
+if (32767 << 8 !== 8388352) {
+ $ERROR('#272: 32767 << 8 === 8388352. Actual: ' + (32767 << 8));
+}
+
+
+if (65535 << 8 !== 16776960) {
+ $ERROR('#273: 65535 << 8 === 16776960. Actual: ' + (65535 << 8));
+}
+
+
+if (131071 << 8 !== 33554176) {
+ $ERROR('#274: 131071 << 8 === 33554176. Actual: ' + (131071 << 8));
+}
+
+
+if (262143 << 8 !== 67108608) {
+ $ERROR('#275: 262143 << 8 === 67108608. Actual: ' + (262143 << 8));
+}
+
+
+if (524287 << 8 !== 134217472) {
+ $ERROR('#276: 524287 << 8 === 134217472. Actual: ' + (524287 << 8));
+}
+
+
+if (1048575 << 8 !== 268435200) {
+ $ERROR('#277: 1048575 << 8 === 268435200. Actual: ' + (1048575 << 8));
+}
+
+
+if (2097151 << 8 !== 536870656) {
+ $ERROR('#278: 2097151 << 8 === 536870656. Actual: ' + (2097151 << 8));
+}
+
+
+if (4194303 << 8 !== 1073741568) {
+ $ERROR('#279: 4194303 << 8 === 1073741568. Actual: ' + (4194303 << 8));
+}
+
+
+if (8388607 << 8 !== 2147483392) {
+ $ERROR('#280: 8388607 << 8 === 2147483392. Actual: ' + (8388607 << 8));
+}
+
+
+if (16777215 << 8 !== -256) {
+ $ERROR('#281: 16777215 << 8 === -256. Actual: ' + (16777215 << 8));
+}
+
+
+if (33554431 << 8 !== -256) {
+ $ERROR('#282: 33554431 << 8 === -256. Actual: ' + (33554431 << 8));
+}
+
+
+if (67108863 << 8 !== -256) {
+ $ERROR('#283: 67108863 << 8 === -256. Actual: ' + (67108863 << 8));
+}
+
+
+if (134217727 << 8 !== -256) {
+ $ERROR('#284: 134217727 << 8 === -256. Actual: ' + (134217727 << 8));
+}
+
+
+if (268435455 << 8 !== -256) {
+ $ERROR('#285: 268435455 << 8 === -256. Actual: ' + (268435455 << 8));
+}
+
+
+if (536870911 << 8 !== -256) {
+ $ERROR('#286: 536870911 << 8 === -256. Actual: ' + (536870911 << 8));
+}
+
+
+if (1073741823 << 8 !== -256) {
+ $ERROR('#287: 1073741823 << 8 === -256. Actual: ' + (1073741823 << 8));
+}
+
+
+if (2147483647 << 8 !== -256) {
+ $ERROR('#288: 2147483647 << 8 === -256. Actual: ' + (2147483647 << 8));
+}
+
+
+if (0 << 9 !== 0) {
+ $ERROR('#289: 0 << 9 === 0. Actual: ' + (0 << 9));
+}
+
+
+if (1 << 9 !== 512) {
+ $ERROR('#290: 1 << 9 === 512. Actual: ' + (1 << 9));
+}
+
+
+if (3 << 9 !== 1536) {
+ $ERROR('#291: 3 << 9 === 1536. Actual: ' + (3 << 9));
+}
+
+
+if (7 << 9 !== 3584) {
+ $ERROR('#292: 7 << 9 === 3584. Actual: ' + (7 << 9));
+}
+
+
+if (15 << 9 !== 7680) {
+ $ERROR('#293: 15 << 9 === 7680. Actual: ' + (15 << 9));
+}
+
+
+if (31 << 9 !== 15872) {
+ $ERROR('#294: 31 << 9 === 15872. Actual: ' + (31 << 9));
+}
+
+
+if (63 << 9 !== 32256) {
+ $ERROR('#295: 63 << 9 === 32256. Actual: ' + (63 << 9));
+}
+
+
+if (127 << 9 !== 65024) {
+ $ERROR('#296: 127 << 9 === 65024. Actual: ' + (127 << 9));
+}
+
+
+if (255 << 9 !== 130560) {
+ $ERROR('#297: 255 << 9 === 130560. Actual: ' + (255 << 9));
+}
+
+
+if (511 << 9 !== 261632) {
+ $ERROR('#298: 511 << 9 === 261632. Actual: ' + (511 << 9));
+}
+
+
+if (1023 << 9 !== 523776) {
+ $ERROR('#299: 1023 << 9 === 523776. Actual: ' + (1023 << 9));
+}
+
+
+if (2047 << 9 !== 1048064) {
+ $ERROR('#300: 2047 << 9 === 1048064. Actual: ' + (2047 << 9));
+}
+
+
+if (4095 << 9 !== 2096640) {
+ $ERROR('#301: 4095 << 9 === 2096640. Actual: ' + (4095 << 9));
+}
+
+
+if (8191 << 9 !== 4193792) {
+ $ERROR('#302: 8191 << 9 === 4193792. Actual: ' + (8191 << 9));
+}
+
+
+if (16383 << 9 !== 8388096) {
+ $ERROR('#303: 16383 << 9 === 8388096. Actual: ' + (16383 << 9));
+}
+
+
+if (32767 << 9 !== 16776704) {
+ $ERROR('#304: 32767 << 9 === 16776704. Actual: ' + (32767 << 9));
+}
+
+
+if (65535 << 9 !== 33553920) {
+ $ERROR('#305: 65535 << 9 === 33553920. Actual: ' + (65535 << 9));
+}
+
+
+if (131071 << 9 !== 67108352) {
+ $ERROR('#306: 131071 << 9 === 67108352. Actual: ' + (131071 << 9));
+}
+
+
+if (262143 << 9 !== 134217216) {
+ $ERROR('#307: 262143 << 9 === 134217216. Actual: ' + (262143 << 9));
+}
+
+
+if (524287 << 9 !== 268434944) {
+ $ERROR('#308: 524287 << 9 === 268434944. Actual: ' + (524287 << 9));
+}
+
+
+if (1048575 << 9 !== 536870400) {
+ $ERROR('#309: 1048575 << 9 === 536870400. Actual: ' + (1048575 << 9));
+}
+
+
+if (2097151 << 9 !== 1073741312) {
+ $ERROR('#310: 2097151 << 9 === 1073741312. Actual: ' + (2097151 << 9));
+}
+
+
+if (4194303 << 9 !== 2147483136) {
+ $ERROR('#311: 4194303 << 9 === 2147483136. Actual: ' + (4194303 << 9));
+}
+
+
+if (8388607 << 9 !== -512) {
+ $ERROR('#312: 8388607 << 9 === -512. Actual: ' + (8388607 << 9));
+}
+
+
+if (16777215 << 9 !== -512) {
+ $ERROR('#313: 16777215 << 9 === -512. Actual: ' + (16777215 << 9));
+}
+
+
+if (33554431 << 9 !== -512) {
+ $ERROR('#314: 33554431 << 9 === -512. Actual: ' + (33554431 << 9));
+}
+
+
+if (67108863 << 9 !== -512) {
+ $ERROR('#315: 67108863 << 9 === -512. Actual: ' + (67108863 << 9));
+}
+
+
+if (134217727 << 9 !== -512) {
+ $ERROR('#316: 134217727 << 9 === -512. Actual: ' + (134217727 << 9));
+}
+
+
+if (268435455 << 9 !== -512) {
+ $ERROR('#317: 268435455 << 9 === -512. Actual: ' + (268435455 << 9));
+}
+
+
+if (536870911 << 9 !== -512) {
+ $ERROR('#318: 536870911 << 9 === -512. Actual: ' + (536870911 << 9));
+}
+
+
+if (1073741823 << 9 !== -512) {
+ $ERROR('#319: 1073741823 << 9 === -512. Actual: ' + (1073741823 << 9));
+}
+
+
+if (2147483647 << 9 !== -512) {
+ $ERROR('#320: 2147483647 << 9 === -512. Actual: ' + (2147483647 << 9));
+}
+
+
+if (0 << 10 !== 0) {
+ $ERROR('#321: 0 << 10 === 0. Actual: ' + (0 << 10));
+}
+
+
+if (1 << 10 !== 1024) {
+ $ERROR('#322: 1 << 10 === 1024. Actual: ' + (1 << 10));
+}
+
+
+if (3 << 10 !== 3072) {
+ $ERROR('#323: 3 << 10 === 3072. Actual: ' + (3 << 10));
+}
+
+
+if (7 << 10 !== 7168) {
+ $ERROR('#324: 7 << 10 === 7168. Actual: ' + (7 << 10));
+}
+
+
+if (15 << 10 !== 15360) {
+ $ERROR('#325: 15 << 10 === 15360. Actual: ' + (15 << 10));
+}
+
+
+if (31 << 10 !== 31744) {
+ $ERROR('#326: 31 << 10 === 31744. Actual: ' + (31 << 10));
+}
+
+
+if (63 << 10 !== 64512) {
+ $ERROR('#327: 63 << 10 === 64512. Actual: ' + (63 << 10));
+}
+
+
+if (127 << 10 !== 130048) {
+ $ERROR('#328: 127 << 10 === 130048. Actual: ' + (127 << 10));
+}
+
+
+if (255 << 10 !== 261120) {
+ $ERROR('#329: 255 << 10 === 261120. Actual: ' + (255 << 10));
+}
+
+
+if (511 << 10 !== 523264) {
+ $ERROR('#330: 511 << 10 === 523264. Actual: ' + (511 << 10));
+}
+
+
+if (1023 << 10 !== 1047552) {
+ $ERROR('#331: 1023 << 10 === 1047552. Actual: ' + (1023 << 10));
+}
+
+
+if (2047 << 10 !== 2096128) {
+ $ERROR('#332: 2047 << 10 === 2096128. Actual: ' + (2047 << 10));
+}
+
+
+if (4095 << 10 !== 4193280) {
+ $ERROR('#333: 4095 << 10 === 4193280. Actual: ' + (4095 << 10));
+}
+
+
+if (8191 << 10 !== 8387584) {
+ $ERROR('#334: 8191 << 10 === 8387584. Actual: ' + (8191 << 10));
+}
+
+
+if (16383 << 10 !== 16776192) {
+ $ERROR('#335: 16383 << 10 === 16776192. Actual: ' + (16383 << 10));
+}
+
+
+if (32767 << 10 !== 33553408) {
+ $ERROR('#336: 32767 << 10 === 33553408. Actual: ' + (32767 << 10));
+}
+
+
+if (65535 << 10 !== 67107840) {
+ $ERROR('#337: 65535 << 10 === 67107840. Actual: ' + (65535 << 10));
+}
+
+
+if (131071 << 10 !== 134216704) {
+ $ERROR('#338: 131071 << 10 === 134216704. Actual: ' + (131071 << 10));
+}
+
+
+if (262143 << 10 !== 268434432) {
+ $ERROR('#339: 262143 << 10 === 268434432. Actual: ' + (262143 << 10));
+}
+
+
+if (524287 << 10 !== 536869888) {
+ $ERROR('#340: 524287 << 10 === 536869888. Actual: ' + (524287 << 10));
+}
+
+
+if (1048575 << 10 !== 1073740800) {
+ $ERROR('#341: 1048575 << 10 === 1073740800. Actual: ' + (1048575 << 10));
+}
+
+
+if (2097151 << 10 !== 2147482624) {
+ $ERROR('#342: 2097151 << 10 === 2147482624. Actual: ' + (2097151 << 10));
+}
+
+
+if (4194303 << 10 !== -1024) {
+ $ERROR('#343: 4194303 << 10 === -1024. Actual: ' + (4194303 << 10));
+}
+
+
+if (8388607 << 10 !== -1024) {
+ $ERROR('#344: 8388607 << 10 === -1024. Actual: ' + (8388607 << 10));
+}
+
+
+if (16777215 << 10 !== -1024) {
+ $ERROR('#345: 16777215 << 10 === -1024. Actual: ' + (16777215 << 10));
+}
+
+
+if (33554431 << 10 !== -1024) {
+ $ERROR('#346: 33554431 << 10 === -1024. Actual: ' + (33554431 << 10));
+}
+
+
+if (67108863 << 10 !== -1024) {
+ $ERROR('#347: 67108863 << 10 === -1024. Actual: ' + (67108863 << 10));
+}
+
+
+if (134217727 << 10 !== -1024) {
+ $ERROR('#348: 134217727 << 10 === -1024. Actual: ' + (134217727 << 10));
+}
+
+
+if (268435455 << 10 !== -1024) {
+ $ERROR('#349: 268435455 << 10 === -1024. Actual: ' + (268435455 << 10));
+}
+
+
+if (536870911 << 10 !== -1024) {
+ $ERROR('#350: 536870911 << 10 === -1024. Actual: ' + (536870911 << 10));
+}
+
+
+if (1073741823 << 10 !== -1024) {
+ $ERROR('#351: 1073741823 << 10 === -1024. Actual: ' + (1073741823 << 10));
+}
+
+
+if (2147483647 << 10 !== -1024) {
+ $ERROR('#352: 2147483647 << 10 === -1024. Actual: ' + (2147483647 << 10));
+}
+
+
+if (0 << 11 !== 0) {
+ $ERROR('#353: 0 << 11 === 0. Actual: ' + (0 << 11));
+}
+
+
+if (1 << 11 !== 2048) {
+ $ERROR('#354: 1 << 11 === 2048. Actual: ' + (1 << 11));
+}
+
+
+if (3 << 11 !== 6144) {
+ $ERROR('#355: 3 << 11 === 6144. Actual: ' + (3 << 11));
+}
+
+
+if (7 << 11 !== 14336) {
+ $ERROR('#356: 7 << 11 === 14336. Actual: ' + (7 << 11));
+}
+
+
+if (15 << 11 !== 30720) {
+ $ERROR('#357: 15 << 11 === 30720. Actual: ' + (15 << 11));
+}
+
+
+if (31 << 11 !== 63488) {
+ $ERROR('#358: 31 << 11 === 63488. Actual: ' + (31 << 11));
+}
+
+
+if (63 << 11 !== 129024) {
+ $ERROR('#359: 63 << 11 === 129024. Actual: ' + (63 << 11));
+}
+
+
+if (127 << 11 !== 260096) {
+ $ERROR('#360: 127 << 11 === 260096. Actual: ' + (127 << 11));
+}
+
+
+if (255 << 11 !== 522240) {
+ $ERROR('#361: 255 << 11 === 522240. Actual: ' + (255 << 11));
+}
+
+
+if (511 << 11 !== 1046528) {
+ $ERROR('#362: 511 << 11 === 1046528. Actual: ' + (511 << 11));
+}
+
+
+if (1023 << 11 !== 2095104) {
+ $ERROR('#363: 1023 << 11 === 2095104. Actual: ' + (1023 << 11));
+}
+
+
+if (2047 << 11 !== 4192256) {
+ $ERROR('#364: 2047 << 11 === 4192256. Actual: ' + (2047 << 11));
+}
+
+
+if (4095 << 11 !== 8386560) {
+ $ERROR('#365: 4095 << 11 === 8386560. Actual: ' + (4095 << 11));
+}
+
+
+if (8191 << 11 !== 16775168) {
+ $ERROR('#366: 8191 << 11 === 16775168. Actual: ' + (8191 << 11));
+}
+
+
+if (16383 << 11 !== 33552384) {
+ $ERROR('#367: 16383 << 11 === 33552384. Actual: ' + (16383 << 11));
+}
+
+
+if (32767 << 11 !== 67106816) {
+ $ERROR('#368: 32767 << 11 === 67106816. Actual: ' + (32767 << 11));
+}
+
+
+if (65535 << 11 !== 134215680) {
+ $ERROR('#369: 65535 << 11 === 134215680. Actual: ' + (65535 << 11));
+}
+
+
+if (131071 << 11 !== 268433408) {
+ $ERROR('#370: 131071 << 11 === 268433408. Actual: ' + (131071 << 11));
+}
+
+
+if (262143 << 11 !== 536868864) {
+ $ERROR('#371: 262143 << 11 === 536868864. Actual: ' + (262143 << 11));
+}
+
+
+if (524287 << 11 !== 1073739776) {
+ $ERROR('#372: 524287 << 11 === 1073739776. Actual: ' + (524287 << 11));
+}
+
+
+if (1048575 << 11 !== 2147481600) {
+ $ERROR('#373: 1048575 << 11 === 2147481600. Actual: ' + (1048575 << 11));
+}
+
+
+if (2097151 << 11 !== -2048) {
+ $ERROR('#374: 2097151 << 11 === -2048. Actual: ' + (2097151 << 11));
+}
+
+
+if (4194303 << 11 !== -2048) {
+ $ERROR('#375: 4194303 << 11 === -2048. Actual: ' + (4194303 << 11));
+}
+
+
+if (8388607 << 11 !== -2048) {
+ $ERROR('#376: 8388607 << 11 === -2048. Actual: ' + (8388607 << 11));
+}
+
+
+if (16777215 << 11 !== -2048) {
+ $ERROR('#377: 16777215 << 11 === -2048. Actual: ' + (16777215 << 11));
+}
+
+
+if (33554431 << 11 !== -2048) {
+ $ERROR('#378: 33554431 << 11 === -2048. Actual: ' + (33554431 << 11));
+}
+
+
+if (67108863 << 11 !== -2048) {
+ $ERROR('#379: 67108863 << 11 === -2048. Actual: ' + (67108863 << 11));
+}
+
+
+if (134217727 << 11 !== -2048) {
+ $ERROR('#380: 134217727 << 11 === -2048. Actual: ' + (134217727 << 11));
+}
+
+
+if (268435455 << 11 !== -2048) {
+ $ERROR('#381: 268435455 << 11 === -2048. Actual: ' + (268435455 << 11));
+}
+
+
+if (536870911 << 11 !== -2048) {
+ $ERROR('#382: 536870911 << 11 === -2048. Actual: ' + (536870911 << 11));
+}
+
+
+if (1073741823 << 11 !== -2048) {
+ $ERROR('#383: 1073741823 << 11 === -2048. Actual: ' + (1073741823 << 11));
+}
+
+
+if (2147483647 << 11 !== -2048) {
+ $ERROR('#384: 2147483647 << 11 === -2048. Actual: ' + (2147483647 << 11));
+}
+
+
+if (0 << 12 !== 0) {
+ $ERROR('#385: 0 << 12 === 0. Actual: ' + (0 << 12));
+}
+
+
+if (1 << 12 !== 4096) {
+ $ERROR('#386: 1 << 12 === 4096. Actual: ' + (1 << 12));
+}
+
+
+if (3 << 12 !== 12288) {
+ $ERROR('#387: 3 << 12 === 12288. Actual: ' + (3 << 12));
+}
+
+
+if (7 << 12 !== 28672) {
+ $ERROR('#388: 7 << 12 === 28672. Actual: ' + (7 << 12));
+}
+
+
+if (15 << 12 !== 61440) {
+ $ERROR('#389: 15 << 12 === 61440. Actual: ' + (15 << 12));
+}
+
+
+if (31 << 12 !== 126976) {
+ $ERROR('#390: 31 << 12 === 126976. Actual: ' + (31 << 12));
+}
+
+
+if (63 << 12 !== 258048) {
+ $ERROR('#391: 63 << 12 === 258048. Actual: ' + (63 << 12));
+}
+
+
+if (127 << 12 !== 520192) {
+ $ERROR('#392: 127 << 12 === 520192. Actual: ' + (127 << 12));
+}
+
+
+if (255 << 12 !== 1044480) {
+ $ERROR('#393: 255 << 12 === 1044480. Actual: ' + (255 << 12));
+}
+
+
+if (511 << 12 !== 2093056) {
+ $ERROR('#394: 511 << 12 === 2093056. Actual: ' + (511 << 12));
+}
+
+
+if (1023 << 12 !== 4190208) {
+ $ERROR('#395: 1023 << 12 === 4190208. Actual: ' + (1023 << 12));
+}
+
+
+if (2047 << 12 !== 8384512) {
+ $ERROR('#396: 2047 << 12 === 8384512. Actual: ' + (2047 << 12));
+}
+
+
+if (4095 << 12 !== 16773120) {
+ $ERROR('#397: 4095 << 12 === 16773120. Actual: ' + (4095 << 12));
+}
+
+
+if (8191 << 12 !== 33550336) {
+ $ERROR('#398: 8191 << 12 === 33550336. Actual: ' + (8191 << 12));
+}
+
+
+if (16383 << 12 !== 67104768) {
+ $ERROR('#399: 16383 << 12 === 67104768. Actual: ' + (16383 << 12));
+}
+
+
+if (32767 << 12 !== 134213632) {
+ $ERROR('#400: 32767 << 12 === 134213632. Actual: ' + (32767 << 12));
+}
+
+
+if (65535 << 12 !== 268431360) {
+ $ERROR('#401: 65535 << 12 === 268431360. Actual: ' + (65535 << 12));
+}
+
+
+if (131071 << 12 !== 536866816) {
+ $ERROR('#402: 131071 << 12 === 536866816. Actual: ' + (131071 << 12));
+}
+
+
+if (262143 << 12 !== 1073737728) {
+ $ERROR('#403: 262143 << 12 === 1073737728. Actual: ' + (262143 << 12));
+}
+
+
+if (524287 << 12 !== 2147479552) {
+ $ERROR('#404: 524287 << 12 === 2147479552. Actual: ' + (524287 << 12));
+}
+
+
+if (1048575 << 12 !== -4096) {
+ $ERROR('#405: 1048575 << 12 === -4096. Actual: ' + (1048575 << 12));
+}
+
+
+if (2097151 << 12 !== -4096) {
+ $ERROR('#406: 2097151 << 12 === -4096. Actual: ' + (2097151 << 12));
+}
+
+
+if (4194303 << 12 !== -4096) {
+ $ERROR('#407: 4194303 << 12 === -4096. Actual: ' + (4194303 << 12));
+}
+
+
+if (8388607 << 12 !== -4096) {
+ $ERROR('#408: 8388607 << 12 === -4096. Actual: ' + (8388607 << 12));
+}
+
+
+if (16777215 << 12 !== -4096) {
+ $ERROR('#409: 16777215 << 12 === -4096. Actual: ' + (16777215 << 12));
+}
+
+
+if (33554431 << 12 !== -4096) {
+ $ERROR('#410: 33554431 << 12 === -4096. Actual: ' + (33554431 << 12));
+}
+
+
+if (67108863 << 12 !== -4096) {
+ $ERROR('#411: 67108863 << 12 === -4096. Actual: ' + (67108863 << 12));
+}
+
+
+if (134217727 << 12 !== -4096) {
+ $ERROR('#412: 134217727 << 12 === -4096. Actual: ' + (134217727 << 12));
+}
+
+
+if (268435455 << 12 !== -4096) {
+ $ERROR('#413: 268435455 << 12 === -4096. Actual: ' + (268435455 << 12));
+}
+
+
+if (536870911 << 12 !== -4096) {
+ $ERROR('#414: 536870911 << 12 === -4096. Actual: ' + (536870911 << 12));
+}
+
+
+if (1073741823 << 12 !== -4096) {
+ $ERROR('#415: 1073741823 << 12 === -4096. Actual: ' + (1073741823 << 12));
+}
+
+
+if (2147483647 << 12 !== -4096) {
+ $ERROR('#416: 2147483647 << 12 === -4096. Actual: ' + (2147483647 << 12));
+}
+
+
+if (0 << 13 !== 0) {
+ $ERROR('#417: 0 << 13 === 0. Actual: ' + (0 << 13));
+}
+
+
+if (1 << 13 !== 8192) {
+ $ERROR('#418: 1 << 13 === 8192. Actual: ' + (1 << 13));
+}
+
+
+if (3 << 13 !== 24576) {
+ $ERROR('#419: 3 << 13 === 24576. Actual: ' + (3 << 13));
+}
+
+
+if (7 << 13 !== 57344) {
+ $ERROR('#420: 7 << 13 === 57344. Actual: ' + (7 << 13));
+}
+
+
+if (15 << 13 !== 122880) {
+ $ERROR('#421: 15 << 13 === 122880. Actual: ' + (15 << 13));
+}
+
+
+if (31 << 13 !== 253952) {
+ $ERROR('#422: 31 << 13 === 253952. Actual: ' + (31 << 13));
+}
+
+
+if (63 << 13 !== 516096) {
+ $ERROR('#423: 63 << 13 === 516096. Actual: ' + (63 << 13));
+}
+
+
+if (127 << 13 !== 1040384) {
+ $ERROR('#424: 127 << 13 === 1040384. Actual: ' + (127 << 13));
+}
+
+
+if (255 << 13 !== 2088960) {
+ $ERROR('#425: 255 << 13 === 2088960. Actual: ' + (255 << 13));
+}
+
+
+if (511 << 13 !== 4186112) {
+ $ERROR('#426: 511 << 13 === 4186112. Actual: ' + (511 << 13));
+}
+
+
+if (1023 << 13 !== 8380416) {
+ $ERROR('#427: 1023 << 13 === 8380416. Actual: ' + (1023 << 13));
+}
+
+
+if (2047 << 13 !== 16769024) {
+ $ERROR('#428: 2047 << 13 === 16769024. Actual: ' + (2047 << 13));
+}
+
+
+if (4095 << 13 !== 33546240) {
+ $ERROR('#429: 4095 << 13 === 33546240. Actual: ' + (4095 << 13));
+}
+
+
+if (8191 << 13 !== 67100672) {
+ $ERROR('#430: 8191 << 13 === 67100672. Actual: ' + (8191 << 13));
+}
+
+
+if (16383 << 13 !== 134209536) {
+ $ERROR('#431: 16383 << 13 === 134209536. Actual: ' + (16383 << 13));
+}
+
+
+if (32767 << 13 !== 268427264) {
+ $ERROR('#432: 32767 << 13 === 268427264. Actual: ' + (32767 << 13));
+}
+
+
+if (65535 << 13 !== 536862720) {
+ $ERROR('#433: 65535 << 13 === 536862720. Actual: ' + (65535 << 13));
+}
+
+
+if (131071 << 13 !== 1073733632) {
+ $ERROR('#434: 131071 << 13 === 1073733632. Actual: ' + (131071 << 13));
+}
+
+
+if (262143 << 13 !== 2147475456) {
+ $ERROR('#435: 262143 << 13 === 2147475456. Actual: ' + (262143 << 13));
+}
+
+
+if (524287 << 13 !== -8192) {
+ $ERROR('#436: 524287 << 13 === -8192. Actual: ' + (524287 << 13));
+}
+
+
+if (1048575 << 13 !== -8192) {
+ $ERROR('#437: 1048575 << 13 === -8192. Actual: ' + (1048575 << 13));
+}
+
+
+if (2097151 << 13 !== -8192) {
+ $ERROR('#438: 2097151 << 13 === -8192. Actual: ' + (2097151 << 13));
+}
+
+
+if (4194303 << 13 !== -8192) {
+ $ERROR('#439: 4194303 << 13 === -8192. Actual: ' + (4194303 << 13));
+}
+
+
+if (8388607 << 13 !== -8192) {
+ $ERROR('#440: 8388607 << 13 === -8192. Actual: ' + (8388607 << 13));
+}
+
+
+if (16777215 << 13 !== -8192) {
+ $ERROR('#441: 16777215 << 13 === -8192. Actual: ' + (16777215 << 13));
+}
+
+
+if (33554431 << 13 !== -8192) {
+ $ERROR('#442: 33554431 << 13 === -8192. Actual: ' + (33554431 << 13));
+}
+
+
+if (67108863 << 13 !== -8192) {
+ $ERROR('#443: 67108863 << 13 === -8192. Actual: ' + (67108863 << 13));
+}
+
+
+if (134217727 << 13 !== -8192) {
+ $ERROR('#444: 134217727 << 13 === -8192. Actual: ' + (134217727 << 13));
+}
+
+
+if (268435455 << 13 !== -8192) {
+ $ERROR('#445: 268435455 << 13 === -8192. Actual: ' + (268435455 << 13));
+}
+
+
+if (536870911 << 13 !== -8192) {
+ $ERROR('#446: 536870911 << 13 === -8192. Actual: ' + (536870911 << 13));
+}
+
+
+if (1073741823 << 13 !== -8192) {
+ $ERROR('#447: 1073741823 << 13 === -8192. Actual: ' + (1073741823 << 13));
+}
+
+
+if (2147483647 << 13 !== -8192) {
+ $ERROR('#448: 2147483647 << 13 === -8192. Actual: ' + (2147483647 << 13));
+}
+
+
+if (0 << 14 !== 0) {
+ $ERROR('#449: 0 << 14 === 0. Actual: ' + (0 << 14));
+}
+
+
+if (1 << 14 !== 16384) {
+ $ERROR('#450: 1 << 14 === 16384. Actual: ' + (1 << 14));
+}
+
+
+if (3 << 14 !== 49152) {
+ $ERROR('#451: 3 << 14 === 49152. Actual: ' + (3 << 14));
+}
+
+
+if (7 << 14 !== 114688) {
+ $ERROR('#452: 7 << 14 === 114688. Actual: ' + (7 << 14));
+}
+
+
+if (15 << 14 !== 245760) {
+ $ERROR('#453: 15 << 14 === 245760. Actual: ' + (15 << 14));
+}
+
+
+if (31 << 14 !== 507904) {
+ $ERROR('#454: 31 << 14 === 507904. Actual: ' + (31 << 14));
+}
+
+
+if (63 << 14 !== 1032192) {
+ $ERROR('#455: 63 << 14 === 1032192. Actual: ' + (63 << 14));
+}
+
+
+if (127 << 14 !== 2080768) {
+ $ERROR('#456: 127 << 14 === 2080768. Actual: ' + (127 << 14));
+}
+
+
+if (255 << 14 !== 4177920) {
+ $ERROR('#457: 255 << 14 === 4177920. Actual: ' + (255 << 14));
+}
+
+
+if (511 << 14 !== 8372224) {
+ $ERROR('#458: 511 << 14 === 8372224. Actual: ' + (511 << 14));
+}
+
+
+if (1023 << 14 !== 16760832) {
+ $ERROR('#459: 1023 << 14 === 16760832. Actual: ' + (1023 << 14));
+}
+
+
+if (2047 << 14 !== 33538048) {
+ $ERROR('#460: 2047 << 14 === 33538048. Actual: ' + (2047 << 14));
+}
+
+
+if (4095 << 14 !== 67092480) {
+ $ERROR('#461: 4095 << 14 === 67092480. Actual: ' + (4095 << 14));
+}
+
+
+if (8191 << 14 !== 134201344) {
+ $ERROR('#462: 8191 << 14 === 134201344. Actual: ' + (8191 << 14));
+}
+
+
+if (16383 << 14 !== 268419072) {
+ $ERROR('#463: 16383 << 14 === 268419072. Actual: ' + (16383 << 14));
+}
+
+
+if (32767 << 14 !== 536854528) {
+ $ERROR('#464: 32767 << 14 === 536854528. Actual: ' + (32767 << 14));
+}
+
+
+if (65535 << 14 !== 1073725440) {
+ $ERROR('#465: 65535 << 14 === 1073725440. Actual: ' + (65535 << 14));
+}
+
+
+if (131071 << 14 !== 2147467264) {
+ $ERROR('#466: 131071 << 14 === 2147467264. Actual: ' + (131071 << 14));
+}
+
+
+if (262143 << 14 !== -16384) {
+ $ERROR('#467: 262143 << 14 === -16384. Actual: ' + (262143 << 14));
+}
+
+
+if (524287 << 14 !== -16384) {
+ $ERROR('#468: 524287 << 14 === -16384. Actual: ' + (524287 << 14));
+}
+
+
+if (1048575 << 14 !== -16384) {
+ $ERROR('#469: 1048575 << 14 === -16384. Actual: ' + (1048575 << 14));
+}
+
+
+if (2097151 << 14 !== -16384) {
+ $ERROR('#470: 2097151 << 14 === -16384. Actual: ' + (2097151 << 14));
+}
+
+
+if (4194303 << 14 !== -16384) {
+ $ERROR('#471: 4194303 << 14 === -16384. Actual: ' + (4194303 << 14));
+}
+
+
+if (8388607 << 14 !== -16384) {
+ $ERROR('#472: 8388607 << 14 === -16384. Actual: ' + (8388607 << 14));
+}
+
+
+if (16777215 << 14 !== -16384) {
+ $ERROR('#473: 16777215 << 14 === -16384. Actual: ' + (16777215 << 14));
+}
+
+
+if (33554431 << 14 !== -16384) {
+ $ERROR('#474: 33554431 << 14 === -16384. Actual: ' + (33554431 << 14));
+}
+
+
+if (67108863 << 14 !== -16384) {
+ $ERROR('#475: 67108863 << 14 === -16384. Actual: ' + (67108863 << 14));
+}
+
+
+if (134217727 << 14 !== -16384) {
+ $ERROR('#476: 134217727 << 14 === -16384. Actual: ' + (134217727 << 14));
+}
+
+
+if (268435455 << 14 !== -16384) {
+ $ERROR('#477: 268435455 << 14 === -16384. Actual: ' + (268435455 << 14));
+}
+
+
+if (536870911 << 14 !== -16384) {
+ $ERROR('#478: 536870911 << 14 === -16384. Actual: ' + (536870911 << 14));
+}
+
+
+if (1073741823 << 14 !== -16384) {
+ $ERROR('#479: 1073741823 << 14 === -16384. Actual: ' + (1073741823 << 14));
+}
+
+
+if (2147483647 << 14 !== -16384) {
+ $ERROR('#480: 2147483647 << 14 === -16384. Actual: ' + (2147483647 << 14));
+}
+
+
+if (0 << 15 !== 0) {
+ $ERROR('#481: 0 << 15 === 0. Actual: ' + (0 << 15));
+}
+
+
+if (1 << 15 !== 32768) {
+ $ERROR('#482: 1 << 15 === 32768. Actual: ' + (1 << 15));
+}
+
+
+if (3 << 15 !== 98304) {
+ $ERROR('#483: 3 << 15 === 98304. Actual: ' + (3 << 15));
+}
+
+
+if (7 << 15 !== 229376) {
+ $ERROR('#484: 7 << 15 === 229376. Actual: ' + (7 << 15));
+}
+
+
+if (15 << 15 !== 491520) {
+ $ERROR('#485: 15 << 15 === 491520. Actual: ' + (15 << 15));
+}
+
+
+if (31 << 15 !== 1015808) {
+ $ERROR('#486: 31 << 15 === 1015808. Actual: ' + (31 << 15));
+}
+
+
+if (63 << 15 !== 2064384) {
+ $ERROR('#487: 63 << 15 === 2064384. Actual: ' + (63 << 15));
+}
+
+
+if (127 << 15 !== 4161536) {
+ $ERROR('#488: 127 << 15 === 4161536. Actual: ' + (127 << 15));
+}
+
+
+if (255 << 15 !== 8355840) {
+ $ERROR('#489: 255 << 15 === 8355840. Actual: ' + (255 << 15));
+}
+
+
+if (511 << 15 !== 16744448) {
+ $ERROR('#490: 511 << 15 === 16744448. Actual: ' + (511 << 15));
+}
+
+
+if (1023 << 15 !== 33521664) {
+ $ERROR('#491: 1023 << 15 === 33521664. Actual: ' + (1023 << 15));
+}
+
+
+if (2047 << 15 !== 67076096) {
+ $ERROR('#492: 2047 << 15 === 67076096. Actual: ' + (2047 << 15));
+}
+
+
+if (4095 << 15 !== 134184960) {
+ $ERROR('#493: 4095 << 15 === 134184960. Actual: ' + (4095 << 15));
+}
+
+
+if (8191 << 15 !== 268402688) {
+ $ERROR('#494: 8191 << 15 === 268402688. Actual: ' + (8191 << 15));
+}
+
+
+if (16383 << 15 !== 536838144) {
+ $ERROR('#495: 16383 << 15 === 536838144. Actual: ' + (16383 << 15));
+}
+
+
+if (32767 << 15 !== 1073709056) {
+ $ERROR('#496: 32767 << 15 === 1073709056. Actual: ' + (32767 << 15));
+}
+
+
+if (65535 << 15 !== 2147450880) {
+ $ERROR('#497: 65535 << 15 === 2147450880. Actual: ' + (65535 << 15));
+}
+
+
+if (131071 << 15 !== -32768) {
+ $ERROR('#498: 131071 << 15 === -32768. Actual: ' + (131071 << 15));
+}
+
+
+if (262143 << 15 !== -32768) {
+ $ERROR('#499: 262143 << 15 === -32768. Actual: ' + (262143 << 15));
+}
+
+
+if (524287 << 15 !== -32768) {
+ $ERROR('#500: 524287 << 15 === -32768. Actual: ' + (524287 << 15));
+}
+
+
+if (1048575 << 15 !== -32768) {
+ $ERROR('#501: 1048575 << 15 === -32768. Actual: ' + (1048575 << 15));
+}
+
+
+if (2097151 << 15 !== -32768) {
+ $ERROR('#502: 2097151 << 15 === -32768. Actual: ' + (2097151 << 15));
+}
+
+
+if (4194303 << 15 !== -32768) {
+ $ERROR('#503: 4194303 << 15 === -32768. Actual: ' + (4194303 << 15));
+}
+
+
+if (8388607 << 15 !== -32768) {
+ $ERROR('#504: 8388607 << 15 === -32768. Actual: ' + (8388607 << 15));
+}
+
+
+if (16777215 << 15 !== -32768) {
+ $ERROR('#505: 16777215 << 15 === -32768. Actual: ' + (16777215 << 15));
+}
+
+
+if (33554431 << 15 !== -32768) {
+ $ERROR('#506: 33554431 << 15 === -32768. Actual: ' + (33554431 << 15));
+}
+
+
+if (67108863 << 15 !== -32768) {
+ $ERROR('#507: 67108863 << 15 === -32768. Actual: ' + (67108863 << 15));
+}
+
+
+if (134217727 << 15 !== -32768) {
+ $ERROR('#508: 134217727 << 15 === -32768. Actual: ' + (134217727 << 15));
+}
+
+
+if (268435455 << 15 !== -32768) {
+ $ERROR('#509: 268435455 << 15 === -32768. Actual: ' + (268435455 << 15));
+}
+
+
+if (536870911 << 15 !== -32768) {
+ $ERROR('#510: 536870911 << 15 === -32768. Actual: ' + (536870911 << 15));
+}
+
+
+if (1073741823 << 15 !== -32768) {
+ $ERROR('#511: 1073741823 << 15 === -32768. Actual: ' + (1073741823 << 15));
+}
+
+
+if (2147483647 << 15 !== -32768) {
+ $ERROR('#512: 2147483647 << 15 === -32768. Actual: ' + (2147483647 << 15));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T4.js
new file mode 100644
index 000000000..93fbaf6dc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A4_T4.js
@@ -0,0 +1,2570 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A4_T4;
+ * @section: 11.7.1;
+ * @assertion: Check operator x << y in distinct points;
+ * @description: ShiftExpression = 2^n - 1, n = 16...31;
+ */
+
+//CHECK
+
+if (0 << 16 !== 0) {
+ $ERROR('#513: 0 << 16 === 0. Actual: ' + (0 << 16));
+}
+
+
+if (1 << 16 !== 65536) {
+ $ERROR('#514: 1 << 16 === 65536. Actual: ' + (1 << 16));
+}
+
+
+if (3 << 16 !== 196608) {
+ $ERROR('#515: 3 << 16 === 196608. Actual: ' + (3 << 16));
+}
+
+
+if (7 << 16 !== 458752) {
+ $ERROR('#516: 7 << 16 === 458752. Actual: ' + (7 << 16));
+}
+
+
+if (15 << 16 !== 983040) {
+ $ERROR('#517: 15 << 16 === 983040. Actual: ' + (15 << 16));
+}
+
+
+if (31 << 16 !== 2031616) {
+ $ERROR('#518: 31 << 16 === 2031616. Actual: ' + (31 << 16));
+}
+
+
+if (63 << 16 !== 4128768) {
+ $ERROR('#519: 63 << 16 === 4128768. Actual: ' + (63 << 16));
+}
+
+
+if (127 << 16 !== 8323072) {
+ $ERROR('#520: 127 << 16 === 8323072. Actual: ' + (127 << 16));
+}
+
+
+if (255 << 16 !== 16711680) {
+ $ERROR('#521: 255 << 16 === 16711680. Actual: ' + (255 << 16));
+}
+
+
+if (511 << 16 !== 33488896) {
+ $ERROR('#522: 511 << 16 === 33488896. Actual: ' + (511 << 16));
+}
+
+
+if (1023 << 16 !== 67043328) {
+ $ERROR('#523: 1023 << 16 === 67043328. Actual: ' + (1023 << 16));
+}
+
+
+if (2047 << 16 !== 134152192) {
+ $ERROR('#524: 2047 << 16 === 134152192. Actual: ' + (2047 << 16));
+}
+
+
+if (4095 << 16 !== 268369920) {
+ $ERROR('#525: 4095 << 16 === 268369920. Actual: ' + (4095 << 16));
+}
+
+
+if (8191 << 16 !== 536805376) {
+ $ERROR('#526: 8191 << 16 === 536805376. Actual: ' + (8191 << 16));
+}
+
+
+if (16383 << 16 !== 1073676288) {
+ $ERROR('#527: 16383 << 16 === 1073676288. Actual: ' + (16383 << 16));
+}
+
+
+if (32767 << 16 !== 2147418112) {
+ $ERROR('#528: 32767 << 16 === 2147418112. Actual: ' + (32767 << 16));
+}
+
+
+if (65535 << 16 !== -65536) {
+ $ERROR('#529: 65535 << 16 === -65536. Actual: ' + (65535 << 16));
+}
+
+
+if (131071 << 16 !== -65536) {
+ $ERROR('#530: 131071 << 16 === -65536. Actual: ' + (131071 << 16));
+}
+
+
+if (262143 << 16 !== -65536) {
+ $ERROR('#531: 262143 << 16 === -65536. Actual: ' + (262143 << 16));
+}
+
+
+if (524287 << 16 !== -65536) {
+ $ERROR('#532: 524287 << 16 === -65536. Actual: ' + (524287 << 16));
+}
+
+
+if (1048575 << 16 !== -65536) {
+ $ERROR('#533: 1048575 << 16 === -65536. Actual: ' + (1048575 << 16));
+}
+
+
+if (2097151 << 16 !== -65536) {
+ $ERROR('#534: 2097151 << 16 === -65536. Actual: ' + (2097151 << 16));
+}
+
+
+if (4194303 << 16 !== -65536) {
+ $ERROR('#535: 4194303 << 16 === -65536. Actual: ' + (4194303 << 16));
+}
+
+
+if (8388607 << 16 !== -65536) {
+ $ERROR('#536: 8388607 << 16 === -65536. Actual: ' + (8388607 << 16));
+}
+
+
+if (16777215 << 16 !== -65536) {
+ $ERROR('#537: 16777215 << 16 === -65536. Actual: ' + (16777215 << 16));
+}
+
+
+if (33554431 << 16 !== -65536) {
+ $ERROR('#538: 33554431 << 16 === -65536. Actual: ' + (33554431 << 16));
+}
+
+
+if (67108863 << 16 !== -65536) {
+ $ERROR('#539: 67108863 << 16 === -65536. Actual: ' + (67108863 << 16));
+}
+
+
+if (134217727 << 16 !== -65536) {
+ $ERROR('#540: 134217727 << 16 === -65536. Actual: ' + (134217727 << 16));
+}
+
+
+if (268435455 << 16 !== -65536) {
+ $ERROR('#541: 268435455 << 16 === -65536. Actual: ' + (268435455 << 16));
+}
+
+
+if (536870911 << 16 !== -65536) {
+ $ERROR('#542: 536870911 << 16 === -65536. Actual: ' + (536870911 << 16));
+}
+
+
+if (1073741823 << 16 !== -65536) {
+ $ERROR('#543: 1073741823 << 16 === -65536. Actual: ' + (1073741823 << 16));
+}
+
+
+if (2147483647 << 16 !== -65536) {
+ $ERROR('#544: 2147483647 << 16 === -65536. Actual: ' + (2147483647 << 16));
+}
+
+
+if (0 << 17 !== 0) {
+ $ERROR('#545: 0 << 17 === 0. Actual: ' + (0 << 17));
+}
+
+
+if (1 << 17 !== 131072) {
+ $ERROR('#546: 1 << 17 === 131072. Actual: ' + (1 << 17));
+}
+
+
+if (3 << 17 !== 393216) {
+ $ERROR('#547: 3 << 17 === 393216. Actual: ' + (3 << 17));
+}
+
+
+if (7 << 17 !== 917504) {
+ $ERROR('#548: 7 << 17 === 917504. Actual: ' + (7 << 17));
+}
+
+
+if (15 << 17 !== 1966080) {
+ $ERROR('#549: 15 << 17 === 1966080. Actual: ' + (15 << 17));
+}
+
+
+if (31 << 17 !== 4063232) {
+ $ERROR('#550: 31 << 17 === 4063232. Actual: ' + (31 << 17));
+}
+
+
+if (63 << 17 !== 8257536) {
+ $ERROR('#551: 63 << 17 === 8257536. Actual: ' + (63 << 17));
+}
+
+
+if (127 << 17 !== 16646144) {
+ $ERROR('#552: 127 << 17 === 16646144. Actual: ' + (127 << 17));
+}
+
+
+if (255 << 17 !== 33423360) {
+ $ERROR('#553: 255 << 17 === 33423360. Actual: ' + (255 << 17));
+}
+
+
+if (511 << 17 !== 66977792) {
+ $ERROR('#554: 511 << 17 === 66977792. Actual: ' + (511 << 17));
+}
+
+
+if (1023 << 17 !== 134086656) {
+ $ERROR('#555: 1023 << 17 === 134086656. Actual: ' + (1023 << 17));
+}
+
+
+if (2047 << 17 !== 268304384) {
+ $ERROR('#556: 2047 << 17 === 268304384. Actual: ' + (2047 << 17));
+}
+
+
+if (4095 << 17 !== 536739840) {
+ $ERROR('#557: 4095 << 17 === 536739840. Actual: ' + (4095 << 17));
+}
+
+
+if (8191 << 17 !== 1073610752) {
+ $ERROR('#558: 8191 << 17 === 1073610752. Actual: ' + (8191 << 17));
+}
+
+
+if (16383 << 17 !== 2147352576) {
+ $ERROR('#559: 16383 << 17 === 2147352576. Actual: ' + (16383 << 17));
+}
+
+
+if (32767 << 17 !== -131072) {
+ $ERROR('#560: 32767 << 17 === -131072. Actual: ' + (32767 << 17));
+}
+
+
+if (65535 << 17 !== -131072) {
+ $ERROR('#561: 65535 << 17 === -131072. Actual: ' + (65535 << 17));
+}
+
+
+if (131071 << 17 !== -131072) {
+ $ERROR('#562: 131071 << 17 === -131072. Actual: ' + (131071 << 17));
+}
+
+
+if (262143 << 17 !== -131072) {
+ $ERROR('#563: 262143 << 17 === -131072. Actual: ' + (262143 << 17));
+}
+
+
+if (524287 << 17 !== -131072) {
+ $ERROR('#564: 524287 << 17 === -131072. Actual: ' + (524287 << 17));
+}
+
+
+if (1048575 << 17 !== -131072) {
+ $ERROR('#565: 1048575 << 17 === -131072. Actual: ' + (1048575 << 17));
+}
+
+
+if (2097151 << 17 !== -131072) {
+ $ERROR('#566: 2097151 << 17 === -131072. Actual: ' + (2097151 << 17));
+}
+
+
+if (4194303 << 17 !== -131072) {
+ $ERROR('#567: 4194303 << 17 === -131072. Actual: ' + (4194303 << 17));
+}
+
+
+if (8388607 << 17 !== -131072) {
+ $ERROR('#568: 8388607 << 17 === -131072. Actual: ' + (8388607 << 17));
+}
+
+
+if (16777215 << 17 !== -131072) {
+ $ERROR('#569: 16777215 << 17 === -131072. Actual: ' + (16777215 << 17));
+}
+
+
+if (33554431 << 17 !== -131072) {
+ $ERROR('#570: 33554431 << 17 === -131072. Actual: ' + (33554431 << 17));
+}
+
+
+if (67108863 << 17 !== -131072) {
+ $ERROR('#571: 67108863 << 17 === -131072. Actual: ' + (67108863 << 17));
+}
+
+
+if (134217727 << 17 !== -131072) {
+ $ERROR('#572: 134217727 << 17 === -131072. Actual: ' + (134217727 << 17));
+}
+
+
+if (268435455 << 17 !== -131072) {
+ $ERROR('#573: 268435455 << 17 === -131072. Actual: ' + (268435455 << 17));
+}
+
+
+if (536870911 << 17 !== -131072) {
+ $ERROR('#574: 536870911 << 17 === -131072. Actual: ' + (536870911 << 17));
+}
+
+
+if (1073741823 << 17 !== -131072) {
+ $ERROR('#575: 1073741823 << 17 === -131072. Actual: ' + (1073741823 << 17));
+}
+
+
+if (2147483647 << 17 !== -131072) {
+ $ERROR('#576: 2147483647 << 17 === -131072. Actual: ' + (2147483647 << 17));
+}
+
+
+if (0 << 18 !== 0) {
+ $ERROR('#577: 0 << 18 === 0. Actual: ' + (0 << 18));
+}
+
+
+if (1 << 18 !== 262144) {
+ $ERROR('#578: 1 << 18 === 262144. Actual: ' + (1 << 18));
+}
+
+
+if (3 << 18 !== 786432) {
+ $ERROR('#579: 3 << 18 === 786432. Actual: ' + (3 << 18));
+}
+
+
+if (7 << 18 !== 1835008) {
+ $ERROR('#580: 7 << 18 === 1835008. Actual: ' + (7 << 18));
+}
+
+
+if (15 << 18 !== 3932160) {
+ $ERROR('#581: 15 << 18 === 3932160. Actual: ' + (15 << 18));
+}
+
+
+if (31 << 18 !== 8126464) {
+ $ERROR('#582: 31 << 18 === 8126464. Actual: ' + (31 << 18));
+}
+
+
+if (63 << 18 !== 16515072) {
+ $ERROR('#583: 63 << 18 === 16515072. Actual: ' + (63 << 18));
+}
+
+
+if (127 << 18 !== 33292288) {
+ $ERROR('#584: 127 << 18 === 33292288. Actual: ' + (127 << 18));
+}
+
+
+if (255 << 18 !== 66846720) {
+ $ERROR('#585: 255 << 18 === 66846720. Actual: ' + (255 << 18));
+}
+
+
+if (511 << 18 !== 133955584) {
+ $ERROR('#586: 511 << 18 === 133955584. Actual: ' + (511 << 18));
+}
+
+
+if (1023 << 18 !== 268173312) {
+ $ERROR('#587: 1023 << 18 === 268173312. Actual: ' + (1023 << 18));
+}
+
+
+if (2047 << 18 !== 536608768) {
+ $ERROR('#588: 2047 << 18 === 536608768. Actual: ' + (2047 << 18));
+}
+
+
+if (4095 << 18 !== 1073479680) {
+ $ERROR('#589: 4095 << 18 === 1073479680. Actual: ' + (4095 << 18));
+}
+
+
+if (8191 << 18 !== 2147221504) {
+ $ERROR('#590: 8191 << 18 === 2147221504. Actual: ' + (8191 << 18));
+}
+
+
+if (16383 << 18 !== -262144) {
+ $ERROR('#591: 16383 << 18 === -262144. Actual: ' + (16383 << 18));
+}
+
+
+if (32767 << 18 !== -262144) {
+ $ERROR('#592: 32767 << 18 === -262144. Actual: ' + (32767 << 18));
+}
+
+
+if (65535 << 18 !== -262144) {
+ $ERROR('#593: 65535 << 18 === -262144. Actual: ' + (65535 << 18));
+}
+
+
+if (131071 << 18 !== -262144) {
+ $ERROR('#594: 131071 << 18 === -262144. Actual: ' + (131071 << 18));
+}
+
+
+if (262143 << 18 !== -262144) {
+ $ERROR('#595: 262143 << 18 === -262144. Actual: ' + (262143 << 18));
+}
+
+
+if (524287 << 18 !== -262144) {
+ $ERROR('#596: 524287 << 18 === -262144. Actual: ' + (524287 << 18));
+}
+
+
+if (1048575 << 18 !== -262144) {
+ $ERROR('#597: 1048575 << 18 === -262144. Actual: ' + (1048575 << 18));
+}
+
+
+if (2097151 << 18 !== -262144) {
+ $ERROR('#598: 2097151 << 18 === -262144. Actual: ' + (2097151 << 18));
+}
+
+
+if (4194303 << 18 !== -262144) {
+ $ERROR('#599: 4194303 << 18 === -262144. Actual: ' + (4194303 << 18));
+}
+
+
+if (8388607 << 18 !== -262144) {
+ $ERROR('#600: 8388607 << 18 === -262144. Actual: ' + (8388607 << 18));
+}
+
+
+if (16777215 << 18 !== -262144) {
+ $ERROR('#601: 16777215 << 18 === -262144. Actual: ' + (16777215 << 18));
+}
+
+
+if (33554431 << 18 !== -262144) {
+ $ERROR('#602: 33554431 << 18 === -262144. Actual: ' + (33554431 << 18));
+}
+
+
+if (67108863 << 18 !== -262144) {
+ $ERROR('#603: 67108863 << 18 === -262144. Actual: ' + (67108863 << 18));
+}
+
+
+if (134217727 << 18 !== -262144) {
+ $ERROR('#604: 134217727 << 18 === -262144. Actual: ' + (134217727 << 18));
+}
+
+
+if (268435455 << 18 !== -262144) {
+ $ERROR('#605: 268435455 << 18 === -262144. Actual: ' + (268435455 << 18));
+}
+
+
+if (536870911 << 18 !== -262144) {
+ $ERROR('#606: 536870911 << 18 === -262144. Actual: ' + (536870911 << 18));
+}
+
+
+if (1073741823 << 18 !== -262144) {
+ $ERROR('#607: 1073741823 << 18 === -262144. Actual: ' + (1073741823 << 18));
+}
+
+
+if (2147483647 << 18 !== -262144) {
+ $ERROR('#608: 2147483647 << 18 === -262144. Actual: ' + (2147483647 << 18));
+}
+
+
+if (0 << 19 !== 0) {
+ $ERROR('#609: 0 << 19 === 0. Actual: ' + (0 << 19));
+}
+
+
+if (1 << 19 !== 524288) {
+ $ERROR('#610: 1 << 19 === 524288. Actual: ' + (1 << 19));
+}
+
+
+if (3 << 19 !== 1572864) {
+ $ERROR('#611: 3 << 19 === 1572864. Actual: ' + (3 << 19));
+}
+
+
+if (7 << 19 !== 3670016) {
+ $ERROR('#612: 7 << 19 === 3670016. Actual: ' + (7 << 19));
+}
+
+
+if (15 << 19 !== 7864320) {
+ $ERROR('#613: 15 << 19 === 7864320. Actual: ' + (15 << 19));
+}
+
+
+if (31 << 19 !== 16252928) {
+ $ERROR('#614: 31 << 19 === 16252928. Actual: ' + (31 << 19));
+}
+
+
+if (63 << 19 !== 33030144) {
+ $ERROR('#615: 63 << 19 === 33030144. Actual: ' + (63 << 19));
+}
+
+
+if (127 << 19 !== 66584576) {
+ $ERROR('#616: 127 << 19 === 66584576. Actual: ' + (127 << 19));
+}
+
+
+if (255 << 19 !== 133693440) {
+ $ERROR('#617: 255 << 19 === 133693440. Actual: ' + (255 << 19));
+}
+
+
+if (511 << 19 !== 267911168) {
+ $ERROR('#618: 511 << 19 === 267911168. Actual: ' + (511 << 19));
+}
+
+
+if (1023 << 19 !== 536346624) {
+ $ERROR('#619: 1023 << 19 === 536346624. Actual: ' + (1023 << 19));
+}
+
+
+if (2047 << 19 !== 1073217536) {
+ $ERROR('#620: 2047 << 19 === 1073217536. Actual: ' + (2047 << 19));
+}
+
+
+if (4095 << 19 !== 2146959360) {
+ $ERROR('#621: 4095 << 19 === 2146959360. Actual: ' + (4095 << 19));
+}
+
+
+if (8191 << 19 !== -524288) {
+ $ERROR('#622: 8191 << 19 === -524288. Actual: ' + (8191 << 19));
+}
+
+
+if (16383 << 19 !== -524288) {
+ $ERROR('#623: 16383 << 19 === -524288. Actual: ' + (16383 << 19));
+}
+
+
+if (32767 << 19 !== -524288) {
+ $ERROR('#624: 32767 << 19 === -524288. Actual: ' + (32767 << 19));
+}
+
+
+if (65535 << 19 !== -524288) {
+ $ERROR('#625: 65535 << 19 === -524288. Actual: ' + (65535 << 19));
+}
+
+
+if (131071 << 19 !== -524288) {
+ $ERROR('#626: 131071 << 19 === -524288. Actual: ' + (131071 << 19));
+}
+
+
+if (262143 << 19 !== -524288) {
+ $ERROR('#627: 262143 << 19 === -524288. Actual: ' + (262143 << 19));
+}
+
+
+if (524287 << 19 !== -524288) {
+ $ERROR('#628: 524287 << 19 === -524288. Actual: ' + (524287 << 19));
+}
+
+
+if (1048575 << 19 !== -524288) {
+ $ERROR('#629: 1048575 << 19 === -524288. Actual: ' + (1048575 << 19));
+}
+
+
+if (2097151 << 19 !== -524288) {
+ $ERROR('#630: 2097151 << 19 === -524288. Actual: ' + (2097151 << 19));
+}
+
+
+if (4194303 << 19 !== -524288) {
+ $ERROR('#631: 4194303 << 19 === -524288. Actual: ' + (4194303 << 19));
+}
+
+
+if (8388607 << 19 !== -524288) {
+ $ERROR('#632: 8388607 << 19 === -524288. Actual: ' + (8388607 << 19));
+}
+
+
+if (16777215 << 19 !== -524288) {
+ $ERROR('#633: 16777215 << 19 === -524288. Actual: ' + (16777215 << 19));
+}
+
+
+if (33554431 << 19 !== -524288) {
+ $ERROR('#634: 33554431 << 19 === -524288. Actual: ' + (33554431 << 19));
+}
+
+
+if (67108863 << 19 !== -524288) {
+ $ERROR('#635: 67108863 << 19 === -524288. Actual: ' + (67108863 << 19));
+}
+
+
+if (134217727 << 19 !== -524288) {
+ $ERROR('#636: 134217727 << 19 === -524288. Actual: ' + (134217727 << 19));
+}
+
+
+if (268435455 << 19 !== -524288) {
+ $ERROR('#637: 268435455 << 19 === -524288. Actual: ' + (268435455 << 19));
+}
+
+
+if (536870911 << 19 !== -524288) {
+ $ERROR('#638: 536870911 << 19 === -524288. Actual: ' + (536870911 << 19));
+}
+
+
+if (1073741823 << 19 !== -524288) {
+ $ERROR('#639: 1073741823 << 19 === -524288. Actual: ' + (1073741823 << 19));
+}
+
+
+if (2147483647 << 19 !== -524288) {
+ $ERROR('#640: 2147483647 << 19 === -524288. Actual: ' + (2147483647 << 19));
+}
+
+
+if (0 << 20 !== 0) {
+ $ERROR('#641: 0 << 20 === 0. Actual: ' + (0 << 20));
+}
+
+
+if (1 << 20 !== 1048576) {
+ $ERROR('#642: 1 << 20 === 1048576. Actual: ' + (1 << 20));
+}
+
+
+if (3 << 20 !== 3145728) {
+ $ERROR('#643: 3 << 20 === 3145728. Actual: ' + (3 << 20));
+}
+
+
+if (7 << 20 !== 7340032) {
+ $ERROR('#644: 7 << 20 === 7340032. Actual: ' + (7 << 20));
+}
+
+
+if (15 << 20 !== 15728640) {
+ $ERROR('#645: 15 << 20 === 15728640. Actual: ' + (15 << 20));
+}
+
+
+if (31 << 20 !== 32505856) {
+ $ERROR('#646: 31 << 20 === 32505856. Actual: ' + (31 << 20));
+}
+
+
+if (63 << 20 !== 66060288) {
+ $ERROR('#647: 63 << 20 === 66060288. Actual: ' + (63 << 20));
+}
+
+
+if (127 << 20 !== 133169152) {
+ $ERROR('#648: 127 << 20 === 133169152. Actual: ' + (127 << 20));
+}
+
+
+if (255 << 20 !== 267386880) {
+ $ERROR('#649: 255 << 20 === 267386880. Actual: ' + (255 << 20));
+}
+
+
+if (511 << 20 !== 535822336) {
+ $ERROR('#650: 511 << 20 === 535822336. Actual: ' + (511 << 20));
+}
+
+
+if (1023 << 20 !== 1072693248) {
+ $ERROR('#651: 1023 << 20 === 1072693248. Actual: ' + (1023 << 20));
+}
+
+
+if (2047 << 20 !== 2146435072) {
+ $ERROR('#652: 2047 << 20 === 2146435072. Actual: ' + (2047 << 20));
+}
+
+
+if (4095 << 20 !== -1048576) {
+ $ERROR('#653: 4095 << 20 === -1048576. Actual: ' + (4095 << 20));
+}
+
+
+if (8191 << 20 !== -1048576) {
+ $ERROR('#654: 8191 << 20 === -1048576. Actual: ' + (8191 << 20));
+}
+
+
+if (16383 << 20 !== -1048576) {
+ $ERROR('#655: 16383 << 20 === -1048576. Actual: ' + (16383 << 20));
+}
+
+
+if (32767 << 20 !== -1048576) {
+ $ERROR('#656: 32767 << 20 === -1048576. Actual: ' + (32767 << 20));
+}
+
+
+if (65535 << 20 !== -1048576) {
+ $ERROR('#657: 65535 << 20 === -1048576. Actual: ' + (65535 << 20));
+}
+
+
+if (131071 << 20 !== -1048576) {
+ $ERROR('#658: 131071 << 20 === -1048576. Actual: ' + (131071 << 20));
+}
+
+
+if (262143 << 20 !== -1048576) {
+ $ERROR('#659: 262143 << 20 === -1048576. Actual: ' + (262143 << 20));
+}
+
+
+if (524287 << 20 !== -1048576) {
+ $ERROR('#660: 524287 << 20 === -1048576. Actual: ' + (524287 << 20));
+}
+
+
+if (1048575 << 20 !== -1048576) {
+ $ERROR('#661: 1048575 << 20 === -1048576. Actual: ' + (1048575 << 20));
+}
+
+
+if (2097151 << 20 !== -1048576) {
+ $ERROR('#662: 2097151 << 20 === -1048576. Actual: ' + (2097151 << 20));
+}
+
+
+if (4194303 << 20 !== -1048576) {
+ $ERROR('#663: 4194303 << 20 === -1048576. Actual: ' + (4194303 << 20));
+}
+
+
+if (8388607 << 20 !== -1048576) {
+ $ERROR('#664: 8388607 << 20 === -1048576. Actual: ' + (8388607 << 20));
+}
+
+
+if (16777215 << 20 !== -1048576) {
+ $ERROR('#665: 16777215 << 20 === -1048576. Actual: ' + (16777215 << 20));
+}
+
+
+if (33554431 << 20 !== -1048576) {
+ $ERROR('#666: 33554431 << 20 === -1048576. Actual: ' + (33554431 << 20));
+}
+
+
+if (67108863 << 20 !== -1048576) {
+ $ERROR('#667: 67108863 << 20 === -1048576. Actual: ' + (67108863 << 20));
+}
+
+
+if (134217727 << 20 !== -1048576) {
+ $ERROR('#668: 134217727 << 20 === -1048576. Actual: ' + (134217727 << 20));
+}
+
+
+if (268435455 << 20 !== -1048576) {
+ $ERROR('#669: 268435455 << 20 === -1048576. Actual: ' + (268435455 << 20));
+}
+
+
+if (536870911 << 20 !== -1048576) {
+ $ERROR('#670: 536870911 << 20 === -1048576. Actual: ' + (536870911 << 20));
+}
+
+
+if (1073741823 << 20 !== -1048576) {
+ $ERROR('#671: 1073741823 << 20 === -1048576. Actual: ' + (1073741823 << 20));
+}
+
+
+if (2147483647 << 20 !== -1048576) {
+ $ERROR('#672: 2147483647 << 20 === -1048576. Actual: ' + (2147483647 << 20));
+}
+
+
+if (0 << 21 !== 0) {
+ $ERROR('#673: 0 << 21 === 0. Actual: ' + (0 << 21));
+}
+
+
+if (1 << 21 !== 2097152) {
+ $ERROR('#674: 1 << 21 === 2097152. Actual: ' + (1 << 21));
+}
+
+
+if (3 << 21 !== 6291456) {
+ $ERROR('#675: 3 << 21 === 6291456. Actual: ' + (3 << 21));
+}
+
+
+if (7 << 21 !== 14680064) {
+ $ERROR('#676: 7 << 21 === 14680064. Actual: ' + (7 << 21));
+}
+
+
+if (15 << 21 !== 31457280) {
+ $ERROR('#677: 15 << 21 === 31457280. Actual: ' + (15 << 21));
+}
+
+
+if (31 << 21 !== 65011712) {
+ $ERROR('#678: 31 << 21 === 65011712. Actual: ' + (31 << 21));
+}
+
+
+if (63 << 21 !== 132120576) {
+ $ERROR('#679: 63 << 21 === 132120576. Actual: ' + (63 << 21));
+}
+
+
+if (127 << 21 !== 266338304) {
+ $ERROR('#680: 127 << 21 === 266338304. Actual: ' + (127 << 21));
+}
+
+
+if (255 << 21 !== 534773760) {
+ $ERROR('#681: 255 << 21 === 534773760. Actual: ' + (255 << 21));
+}
+
+
+if (511 << 21 !== 1071644672) {
+ $ERROR('#682: 511 << 21 === 1071644672. Actual: ' + (511 << 21));
+}
+
+
+if (1023 << 21 !== 2145386496) {
+ $ERROR('#683: 1023 << 21 === 2145386496. Actual: ' + (1023 << 21));
+}
+
+
+if (2047 << 21 !== -2097152) {
+ $ERROR('#684: 2047 << 21 === -2097152. Actual: ' + (2047 << 21));
+}
+
+
+if (4095 << 21 !== -2097152) {
+ $ERROR('#685: 4095 << 21 === -2097152. Actual: ' + (4095 << 21));
+}
+
+
+if (8191 << 21 !== -2097152) {
+ $ERROR('#686: 8191 << 21 === -2097152. Actual: ' + (8191 << 21));
+}
+
+
+if (16383 << 21 !== -2097152) {
+ $ERROR('#687: 16383 << 21 === -2097152. Actual: ' + (16383 << 21));
+}
+
+
+if (32767 << 21 !== -2097152) {
+ $ERROR('#688: 32767 << 21 === -2097152. Actual: ' + (32767 << 21));
+}
+
+
+if (65535 << 21 !== -2097152) {
+ $ERROR('#689: 65535 << 21 === -2097152. Actual: ' + (65535 << 21));
+}
+
+
+if (131071 << 21 !== -2097152) {
+ $ERROR('#690: 131071 << 21 === -2097152. Actual: ' + (131071 << 21));
+}
+
+
+if (262143 << 21 !== -2097152) {
+ $ERROR('#691: 262143 << 21 === -2097152. Actual: ' + (262143 << 21));
+}
+
+
+if (524287 << 21 !== -2097152) {
+ $ERROR('#692: 524287 << 21 === -2097152. Actual: ' + (524287 << 21));
+}
+
+
+if (1048575 << 21 !== -2097152) {
+ $ERROR('#693: 1048575 << 21 === -2097152. Actual: ' + (1048575 << 21));
+}
+
+
+if (2097151 << 21 !== -2097152) {
+ $ERROR('#694: 2097151 << 21 === -2097152. Actual: ' + (2097151 << 21));
+}
+
+
+if (4194303 << 21 !== -2097152) {
+ $ERROR('#695: 4194303 << 21 === -2097152. Actual: ' + (4194303 << 21));
+}
+
+
+if (8388607 << 21 !== -2097152) {
+ $ERROR('#696: 8388607 << 21 === -2097152. Actual: ' + (8388607 << 21));
+}
+
+
+if (16777215 << 21 !== -2097152) {
+ $ERROR('#697: 16777215 << 21 === -2097152. Actual: ' + (16777215 << 21));
+}
+
+
+if (33554431 << 21 !== -2097152) {
+ $ERROR('#698: 33554431 << 21 === -2097152. Actual: ' + (33554431 << 21));
+}
+
+
+if (67108863 << 21 !== -2097152) {
+ $ERROR('#699: 67108863 << 21 === -2097152. Actual: ' + (67108863 << 21));
+}
+
+
+if (134217727 << 21 !== -2097152) {
+ $ERROR('#700: 134217727 << 21 === -2097152. Actual: ' + (134217727 << 21));
+}
+
+
+if (268435455 << 21 !== -2097152) {
+ $ERROR('#701: 268435455 << 21 === -2097152. Actual: ' + (268435455 << 21));
+}
+
+
+if (536870911 << 21 !== -2097152) {
+ $ERROR('#702: 536870911 << 21 === -2097152. Actual: ' + (536870911 << 21));
+}
+
+
+if (1073741823 << 21 !== -2097152) {
+ $ERROR('#703: 1073741823 << 21 === -2097152. Actual: ' + (1073741823 << 21));
+}
+
+
+if (2147483647 << 21 !== -2097152) {
+ $ERROR('#704: 2147483647 << 21 === -2097152. Actual: ' + (2147483647 << 21));
+}
+
+
+if (0 << 22 !== 0) {
+ $ERROR('#705: 0 << 22 === 0. Actual: ' + (0 << 22));
+}
+
+
+if (1 << 22 !== 4194304) {
+ $ERROR('#706: 1 << 22 === 4194304. Actual: ' + (1 << 22));
+}
+
+
+if (3 << 22 !== 12582912) {
+ $ERROR('#707: 3 << 22 === 12582912. Actual: ' + (3 << 22));
+}
+
+
+if (7 << 22 !== 29360128) {
+ $ERROR('#708: 7 << 22 === 29360128. Actual: ' + (7 << 22));
+}
+
+
+if (15 << 22 !== 62914560) {
+ $ERROR('#709: 15 << 22 === 62914560. Actual: ' + (15 << 22));
+}
+
+
+if (31 << 22 !== 130023424) {
+ $ERROR('#710: 31 << 22 === 130023424. Actual: ' + (31 << 22));
+}
+
+
+if (63 << 22 !== 264241152) {
+ $ERROR('#711: 63 << 22 === 264241152. Actual: ' + (63 << 22));
+}
+
+
+if (127 << 22 !== 532676608) {
+ $ERROR('#712: 127 << 22 === 532676608. Actual: ' + (127 << 22));
+}
+
+
+if (255 << 22 !== 1069547520) {
+ $ERROR('#713: 255 << 22 === 1069547520. Actual: ' + (255 << 22));
+}
+
+
+if (511 << 22 !== 2143289344) {
+ $ERROR('#714: 511 << 22 === 2143289344. Actual: ' + (511 << 22));
+}
+
+
+if (1023 << 22 !== -4194304) {
+ $ERROR('#715: 1023 << 22 === -4194304. Actual: ' + (1023 << 22));
+}
+
+
+if (2047 << 22 !== -4194304) {
+ $ERROR('#716: 2047 << 22 === -4194304. Actual: ' + (2047 << 22));
+}
+
+
+if (4095 << 22 !== -4194304) {
+ $ERROR('#717: 4095 << 22 === -4194304. Actual: ' + (4095 << 22));
+}
+
+
+if (8191 << 22 !== -4194304) {
+ $ERROR('#718: 8191 << 22 === -4194304. Actual: ' + (8191 << 22));
+}
+
+
+if (16383 << 22 !== -4194304) {
+ $ERROR('#719: 16383 << 22 === -4194304. Actual: ' + (16383 << 22));
+}
+
+
+if (32767 << 22 !== -4194304) {
+ $ERROR('#720: 32767 << 22 === -4194304. Actual: ' + (32767 << 22));
+}
+
+
+if (65535 << 22 !== -4194304) {
+ $ERROR('#721: 65535 << 22 === -4194304. Actual: ' + (65535 << 22));
+}
+
+
+if (131071 << 22 !== -4194304) {
+ $ERROR('#722: 131071 << 22 === -4194304. Actual: ' + (131071 << 22));
+}
+
+
+if (262143 << 22 !== -4194304) {
+ $ERROR('#723: 262143 << 22 === -4194304. Actual: ' + (262143 << 22));
+}
+
+
+if (524287 << 22 !== -4194304) {
+ $ERROR('#724: 524287 << 22 === -4194304. Actual: ' + (524287 << 22));
+}
+
+
+if (1048575 << 22 !== -4194304) {
+ $ERROR('#725: 1048575 << 22 === -4194304. Actual: ' + (1048575 << 22));
+}
+
+
+if (2097151 << 22 !== -4194304) {
+ $ERROR('#726: 2097151 << 22 === -4194304. Actual: ' + (2097151 << 22));
+}
+
+
+if (4194303 << 22 !== -4194304) {
+ $ERROR('#727: 4194303 << 22 === -4194304. Actual: ' + (4194303 << 22));
+}
+
+
+if (8388607 << 22 !== -4194304) {
+ $ERROR('#728: 8388607 << 22 === -4194304. Actual: ' + (8388607 << 22));
+}
+
+
+if (16777215 << 22 !== -4194304) {
+ $ERROR('#729: 16777215 << 22 === -4194304. Actual: ' + (16777215 << 22));
+}
+
+
+if (33554431 << 22 !== -4194304) {
+ $ERROR('#730: 33554431 << 22 === -4194304. Actual: ' + (33554431 << 22));
+}
+
+
+if (67108863 << 22 !== -4194304) {
+ $ERROR('#731: 67108863 << 22 === -4194304. Actual: ' + (67108863 << 22));
+}
+
+
+if (134217727 << 22 !== -4194304) {
+ $ERROR('#732: 134217727 << 22 === -4194304. Actual: ' + (134217727 << 22));
+}
+
+
+if (268435455 << 22 !== -4194304) {
+ $ERROR('#733: 268435455 << 22 === -4194304. Actual: ' + (268435455 << 22));
+}
+
+
+if (536870911 << 22 !== -4194304) {
+ $ERROR('#734: 536870911 << 22 === -4194304. Actual: ' + (536870911 << 22));
+}
+
+
+if (1073741823 << 22 !== -4194304) {
+ $ERROR('#735: 1073741823 << 22 === -4194304. Actual: ' + (1073741823 << 22));
+}
+
+
+if (2147483647 << 22 !== -4194304) {
+ $ERROR('#736: 2147483647 << 22 === -4194304. Actual: ' + (2147483647 << 22));
+}
+
+
+if (0 << 23 !== 0) {
+ $ERROR('#737: 0 << 23 === 0. Actual: ' + (0 << 23));
+}
+
+
+if (1 << 23 !== 8388608) {
+ $ERROR('#738: 1 << 23 === 8388608. Actual: ' + (1 << 23));
+}
+
+
+if (3 << 23 !== 25165824) {
+ $ERROR('#739: 3 << 23 === 25165824. Actual: ' + (3 << 23));
+}
+
+
+if (7 << 23 !== 58720256) {
+ $ERROR('#740: 7 << 23 === 58720256. Actual: ' + (7 << 23));
+}
+
+
+if (15 << 23 !== 125829120) {
+ $ERROR('#741: 15 << 23 === 125829120. Actual: ' + (15 << 23));
+}
+
+
+if (31 << 23 !== 260046848) {
+ $ERROR('#742: 31 << 23 === 260046848. Actual: ' + (31 << 23));
+}
+
+
+if (63 << 23 !== 528482304) {
+ $ERROR('#743: 63 << 23 === 528482304. Actual: ' + (63 << 23));
+}
+
+
+if (127 << 23 !== 1065353216) {
+ $ERROR('#744: 127 << 23 === 1065353216. Actual: ' + (127 << 23));
+}
+
+
+if (255 << 23 !== 2139095040) {
+ $ERROR('#745: 255 << 23 === 2139095040. Actual: ' + (255 << 23));
+}
+
+
+if (511 << 23 !== -8388608) {
+ $ERROR('#746: 511 << 23 === -8388608. Actual: ' + (511 << 23));
+}
+
+
+if (1023 << 23 !== -8388608) {
+ $ERROR('#747: 1023 << 23 === -8388608. Actual: ' + (1023 << 23));
+}
+
+
+if (2047 << 23 !== -8388608) {
+ $ERROR('#748: 2047 << 23 === -8388608. Actual: ' + (2047 << 23));
+}
+
+
+if (4095 << 23 !== -8388608) {
+ $ERROR('#749: 4095 << 23 === -8388608. Actual: ' + (4095 << 23));
+}
+
+
+if (8191 << 23 !== -8388608) {
+ $ERROR('#750: 8191 << 23 === -8388608. Actual: ' + (8191 << 23));
+}
+
+
+if (16383 << 23 !== -8388608) {
+ $ERROR('#751: 16383 << 23 === -8388608. Actual: ' + (16383 << 23));
+}
+
+
+if (32767 << 23 !== -8388608) {
+ $ERROR('#752: 32767 << 23 === -8388608. Actual: ' + (32767 << 23));
+}
+
+
+if (65535 << 23 !== -8388608) {
+ $ERROR('#753: 65535 << 23 === -8388608. Actual: ' + (65535 << 23));
+}
+
+
+if (131071 << 23 !== -8388608) {
+ $ERROR('#754: 131071 << 23 === -8388608. Actual: ' + (131071 << 23));
+}
+
+
+if (262143 << 23 !== -8388608) {
+ $ERROR('#755: 262143 << 23 === -8388608. Actual: ' + (262143 << 23));
+}
+
+
+if (524287 << 23 !== -8388608) {
+ $ERROR('#756: 524287 << 23 === -8388608. Actual: ' + (524287 << 23));
+}
+
+
+if (1048575 << 23 !== -8388608) {
+ $ERROR('#757: 1048575 << 23 === -8388608. Actual: ' + (1048575 << 23));
+}
+
+
+if (2097151 << 23 !== -8388608) {
+ $ERROR('#758: 2097151 << 23 === -8388608. Actual: ' + (2097151 << 23));
+}
+
+
+if (4194303 << 23 !== -8388608) {
+ $ERROR('#759: 4194303 << 23 === -8388608. Actual: ' + (4194303 << 23));
+}
+
+
+if (8388607 << 23 !== -8388608) {
+ $ERROR('#760: 8388607 << 23 === -8388608. Actual: ' + (8388607 << 23));
+}
+
+
+if (16777215 << 23 !== -8388608) {
+ $ERROR('#761: 16777215 << 23 === -8388608. Actual: ' + (16777215 << 23));
+}
+
+
+if (33554431 << 23 !== -8388608) {
+ $ERROR('#762: 33554431 << 23 === -8388608. Actual: ' + (33554431 << 23));
+}
+
+
+if (67108863 << 23 !== -8388608) {
+ $ERROR('#763: 67108863 << 23 === -8388608. Actual: ' + (67108863 << 23));
+}
+
+
+if (134217727 << 23 !== -8388608) {
+ $ERROR('#764: 134217727 << 23 === -8388608. Actual: ' + (134217727 << 23));
+}
+
+
+if (268435455 << 23 !== -8388608) {
+ $ERROR('#765: 268435455 << 23 === -8388608. Actual: ' + (268435455 << 23));
+}
+
+
+if (536870911 << 23 !== -8388608) {
+ $ERROR('#766: 536870911 << 23 === -8388608. Actual: ' + (536870911 << 23));
+}
+
+
+if (1073741823 << 23 !== -8388608) {
+ $ERROR('#767: 1073741823 << 23 === -8388608. Actual: ' + (1073741823 << 23));
+}
+
+
+if (2147483647 << 23 !== -8388608) {
+ $ERROR('#768: 2147483647 << 23 === -8388608. Actual: ' + (2147483647 << 23));
+}
+
+
+if (0 << 24 !== 0) {
+ $ERROR('#769: 0 << 24 === 0. Actual: ' + (0 << 24));
+}
+
+
+if (1 << 24 !== 16777216) {
+ $ERROR('#770: 1 << 24 === 16777216. Actual: ' + (1 << 24));
+}
+
+
+if (3 << 24 !== 50331648) {
+ $ERROR('#771: 3 << 24 === 50331648. Actual: ' + (3 << 24));
+}
+
+
+if (7 << 24 !== 117440512) {
+ $ERROR('#772: 7 << 24 === 117440512. Actual: ' + (7 << 24));
+}
+
+
+if (15 << 24 !== 251658240) {
+ $ERROR('#773: 15 << 24 === 251658240. Actual: ' + (15 << 24));
+}
+
+
+if (31 << 24 !== 520093696) {
+ $ERROR('#774: 31 << 24 === 520093696. Actual: ' + (31 << 24));
+}
+
+
+if (63 << 24 !== 1056964608) {
+ $ERROR('#775: 63 << 24 === 1056964608. Actual: ' + (63 << 24));
+}
+
+
+if (127 << 24 !== 2130706432) {
+ $ERROR('#776: 127 << 24 === 2130706432. Actual: ' + (127 << 24));
+}
+
+
+if (255 << 24 !== -16777216) {
+ $ERROR('#777: 255 << 24 === -16777216. Actual: ' + (255 << 24));
+}
+
+
+if (511 << 24 !== -16777216) {
+ $ERROR('#778: 511 << 24 === -16777216. Actual: ' + (511 << 24));
+}
+
+
+if (1023 << 24 !== -16777216) {
+ $ERROR('#779: 1023 << 24 === -16777216. Actual: ' + (1023 << 24));
+}
+
+
+if (2047 << 24 !== -16777216) {
+ $ERROR('#780: 2047 << 24 === -16777216. Actual: ' + (2047 << 24));
+}
+
+
+if (4095 << 24 !== -16777216) {
+ $ERROR('#781: 4095 << 24 === -16777216. Actual: ' + (4095 << 24));
+}
+
+
+if (8191 << 24 !== -16777216) {
+ $ERROR('#782: 8191 << 24 === -16777216. Actual: ' + (8191 << 24));
+}
+
+
+if (16383 << 24 !== -16777216) {
+ $ERROR('#783: 16383 << 24 === -16777216. Actual: ' + (16383 << 24));
+}
+
+
+if (32767 << 24 !== -16777216) {
+ $ERROR('#784: 32767 << 24 === -16777216. Actual: ' + (32767 << 24));
+}
+
+
+if (65535 << 24 !== -16777216) {
+ $ERROR('#785: 65535 << 24 === -16777216. Actual: ' + (65535 << 24));
+}
+
+
+if (131071 << 24 !== -16777216) {
+ $ERROR('#786: 131071 << 24 === -16777216. Actual: ' + (131071 << 24));
+}
+
+
+if (262143 << 24 !== -16777216) {
+ $ERROR('#787: 262143 << 24 === -16777216. Actual: ' + (262143 << 24));
+}
+
+
+if (524287 << 24 !== -16777216) {
+ $ERROR('#788: 524287 << 24 === -16777216. Actual: ' + (524287 << 24));
+}
+
+
+if (1048575 << 24 !== -16777216) {
+ $ERROR('#789: 1048575 << 24 === -16777216. Actual: ' + (1048575 << 24));
+}
+
+
+if (2097151 << 24 !== -16777216) {
+ $ERROR('#790: 2097151 << 24 === -16777216. Actual: ' + (2097151 << 24));
+}
+
+
+if (4194303 << 24 !== -16777216) {
+ $ERROR('#791: 4194303 << 24 === -16777216. Actual: ' + (4194303 << 24));
+}
+
+
+if (8388607 << 24 !== -16777216) {
+ $ERROR('#792: 8388607 << 24 === -16777216. Actual: ' + (8388607 << 24));
+}
+
+
+if (16777215 << 24 !== -16777216) {
+ $ERROR('#793: 16777215 << 24 === -16777216. Actual: ' + (16777215 << 24));
+}
+
+
+if (33554431 << 24 !== -16777216) {
+ $ERROR('#794: 33554431 << 24 === -16777216. Actual: ' + (33554431 << 24));
+}
+
+
+if (67108863 << 24 !== -16777216) {
+ $ERROR('#795: 67108863 << 24 === -16777216. Actual: ' + (67108863 << 24));
+}
+
+
+if (134217727 << 24 !== -16777216) {
+ $ERROR('#796: 134217727 << 24 === -16777216. Actual: ' + (134217727 << 24));
+}
+
+
+if (268435455 << 24 !== -16777216) {
+ $ERROR('#797: 268435455 << 24 === -16777216. Actual: ' + (268435455 << 24));
+}
+
+
+if (536870911 << 24 !== -16777216) {
+ $ERROR('#798: 536870911 << 24 === -16777216. Actual: ' + (536870911 << 24));
+}
+
+
+if (1073741823 << 24 !== -16777216) {
+ $ERROR('#799: 1073741823 << 24 === -16777216. Actual: ' + (1073741823 << 24));
+}
+
+
+if (2147483647 << 24 !== -16777216) {
+ $ERROR('#800: 2147483647 << 24 === -16777216. Actual: ' + (2147483647 << 24));
+}
+
+
+if (0 << 25 !== 0) {
+ $ERROR('#801: 0 << 25 === 0. Actual: ' + (0 << 25));
+}
+
+
+if (1 << 25 !== 33554432) {
+ $ERROR('#802: 1 << 25 === 33554432. Actual: ' + (1 << 25));
+}
+
+
+if (3 << 25 !== 100663296) {
+ $ERROR('#803: 3 << 25 === 100663296. Actual: ' + (3 << 25));
+}
+
+
+if (7 << 25 !== 234881024) {
+ $ERROR('#804: 7 << 25 === 234881024. Actual: ' + (7 << 25));
+}
+
+
+if (15 << 25 !== 503316480) {
+ $ERROR('#805: 15 << 25 === 503316480. Actual: ' + (15 << 25));
+}
+
+
+if (31 << 25 !== 1040187392) {
+ $ERROR('#806: 31 << 25 === 1040187392. Actual: ' + (31 << 25));
+}
+
+
+if (63 << 25 !== 2113929216) {
+ $ERROR('#807: 63 << 25 === 2113929216. Actual: ' + (63 << 25));
+}
+
+
+if (127 << 25 !== -33554432) {
+ $ERROR('#808: 127 << 25 === -33554432. Actual: ' + (127 << 25));
+}
+
+
+if (255 << 25 !== -33554432) {
+ $ERROR('#809: 255 << 25 === -33554432. Actual: ' + (255 << 25));
+}
+
+
+if (511 << 25 !== -33554432) {
+ $ERROR('#810: 511 << 25 === -33554432. Actual: ' + (511 << 25));
+}
+
+
+if (1023 << 25 !== -33554432) {
+ $ERROR('#811: 1023 << 25 === -33554432. Actual: ' + (1023 << 25));
+}
+
+
+if (2047 << 25 !== -33554432) {
+ $ERROR('#812: 2047 << 25 === -33554432. Actual: ' + (2047 << 25));
+}
+
+
+if (4095 << 25 !== -33554432) {
+ $ERROR('#813: 4095 << 25 === -33554432. Actual: ' + (4095 << 25));
+}
+
+
+if (8191 << 25 !== -33554432) {
+ $ERROR('#814: 8191 << 25 === -33554432. Actual: ' + (8191 << 25));
+}
+
+
+if (16383 << 25 !== -33554432) {
+ $ERROR('#815: 16383 << 25 === -33554432. Actual: ' + (16383 << 25));
+}
+
+
+if (32767 << 25 !== -33554432) {
+ $ERROR('#816: 32767 << 25 === -33554432. Actual: ' + (32767 << 25));
+}
+
+
+if (65535 << 25 !== -33554432) {
+ $ERROR('#817: 65535 << 25 === -33554432. Actual: ' + (65535 << 25));
+}
+
+
+if (131071 << 25 !== -33554432) {
+ $ERROR('#818: 131071 << 25 === -33554432. Actual: ' + (131071 << 25));
+}
+
+
+if (262143 << 25 !== -33554432) {
+ $ERROR('#819: 262143 << 25 === -33554432. Actual: ' + (262143 << 25));
+}
+
+
+if (524287 << 25 !== -33554432) {
+ $ERROR('#820: 524287 << 25 === -33554432. Actual: ' + (524287 << 25));
+}
+
+
+if (1048575 << 25 !== -33554432) {
+ $ERROR('#821: 1048575 << 25 === -33554432. Actual: ' + (1048575 << 25));
+}
+
+
+if (2097151 << 25 !== -33554432) {
+ $ERROR('#822: 2097151 << 25 === -33554432. Actual: ' + (2097151 << 25));
+}
+
+
+if (4194303 << 25 !== -33554432) {
+ $ERROR('#823: 4194303 << 25 === -33554432. Actual: ' + (4194303 << 25));
+}
+
+
+if (8388607 << 25 !== -33554432) {
+ $ERROR('#824: 8388607 << 25 === -33554432. Actual: ' + (8388607 << 25));
+}
+
+
+if (16777215 << 25 !== -33554432) {
+ $ERROR('#825: 16777215 << 25 === -33554432. Actual: ' + (16777215 << 25));
+}
+
+
+if (33554431 << 25 !== -33554432) {
+ $ERROR('#826: 33554431 << 25 === -33554432. Actual: ' + (33554431 << 25));
+}
+
+
+if (67108863 << 25 !== -33554432) {
+ $ERROR('#827: 67108863 << 25 === -33554432. Actual: ' + (67108863 << 25));
+}
+
+
+if (134217727 << 25 !== -33554432) {
+ $ERROR('#828: 134217727 << 25 === -33554432. Actual: ' + (134217727 << 25));
+}
+
+
+if (268435455 << 25 !== -33554432) {
+ $ERROR('#829: 268435455 << 25 === -33554432. Actual: ' + (268435455 << 25));
+}
+
+
+if (536870911 << 25 !== -33554432) {
+ $ERROR('#830: 536870911 << 25 === -33554432. Actual: ' + (536870911 << 25));
+}
+
+
+if (1073741823 << 25 !== -33554432) {
+ $ERROR('#831: 1073741823 << 25 === -33554432. Actual: ' + (1073741823 << 25));
+}
+
+
+if (2147483647 << 25 !== -33554432) {
+ $ERROR('#832: 2147483647 << 25 === -33554432. Actual: ' + (2147483647 << 25));
+}
+
+
+if (0 << 26 !== 0) {
+ $ERROR('#833: 0 << 26 === 0. Actual: ' + (0 << 26));
+}
+
+
+if (1 << 26 !== 67108864) {
+ $ERROR('#834: 1 << 26 === 67108864. Actual: ' + (1 << 26));
+}
+
+
+if (3 << 26 !== 201326592) {
+ $ERROR('#835: 3 << 26 === 201326592. Actual: ' + (3 << 26));
+}
+
+
+if (7 << 26 !== 469762048) {
+ $ERROR('#836: 7 << 26 === 469762048. Actual: ' + (7 << 26));
+}
+
+
+if (15 << 26 !== 1006632960) {
+ $ERROR('#837: 15 << 26 === 1006632960. Actual: ' + (15 << 26));
+}
+
+
+if (31 << 26 !== 2080374784) {
+ $ERROR('#838: 31 << 26 === 2080374784. Actual: ' + (31 << 26));
+}
+
+
+if (63 << 26 !== -67108864) {
+ $ERROR('#839: 63 << 26 === -67108864. Actual: ' + (63 << 26));
+}
+
+
+if (127 << 26 !== -67108864) {
+ $ERROR('#840: 127 << 26 === -67108864. Actual: ' + (127 << 26));
+}
+
+
+if (255 << 26 !== -67108864) {
+ $ERROR('#841: 255 << 26 === -67108864. Actual: ' + (255 << 26));
+}
+
+
+if (511 << 26 !== -67108864) {
+ $ERROR('#842: 511 << 26 === -67108864. Actual: ' + (511 << 26));
+}
+
+
+if (1023 << 26 !== -67108864) {
+ $ERROR('#843: 1023 << 26 === -67108864. Actual: ' + (1023 << 26));
+}
+
+
+if (2047 << 26 !== -67108864) {
+ $ERROR('#844: 2047 << 26 === -67108864. Actual: ' + (2047 << 26));
+}
+
+
+if (4095 << 26 !== -67108864) {
+ $ERROR('#845: 4095 << 26 === -67108864. Actual: ' + (4095 << 26));
+}
+
+
+if (8191 << 26 !== -67108864) {
+ $ERROR('#846: 8191 << 26 === -67108864. Actual: ' + (8191 << 26));
+}
+
+
+if (16383 << 26 !== -67108864) {
+ $ERROR('#847: 16383 << 26 === -67108864. Actual: ' + (16383 << 26));
+}
+
+
+if (32767 << 26 !== -67108864) {
+ $ERROR('#848: 32767 << 26 === -67108864. Actual: ' + (32767 << 26));
+}
+
+
+if (65535 << 26 !== -67108864) {
+ $ERROR('#849: 65535 << 26 === -67108864. Actual: ' + (65535 << 26));
+}
+
+
+if (131071 << 26 !== -67108864) {
+ $ERROR('#850: 131071 << 26 === -67108864. Actual: ' + (131071 << 26));
+}
+
+
+if (262143 << 26 !== -67108864) {
+ $ERROR('#851: 262143 << 26 === -67108864. Actual: ' + (262143 << 26));
+}
+
+
+if (524287 << 26 !== -67108864) {
+ $ERROR('#852: 524287 << 26 === -67108864. Actual: ' + (524287 << 26));
+}
+
+
+if (1048575 << 26 !== -67108864) {
+ $ERROR('#853: 1048575 << 26 === -67108864. Actual: ' + (1048575 << 26));
+}
+
+
+if (2097151 << 26 !== -67108864) {
+ $ERROR('#854: 2097151 << 26 === -67108864. Actual: ' + (2097151 << 26));
+}
+
+
+if (4194303 << 26 !== -67108864) {
+ $ERROR('#855: 4194303 << 26 === -67108864. Actual: ' + (4194303 << 26));
+}
+
+
+if (8388607 << 26 !== -67108864) {
+ $ERROR('#856: 8388607 << 26 === -67108864. Actual: ' + (8388607 << 26));
+}
+
+
+if (16777215 << 26 !== -67108864) {
+ $ERROR('#857: 16777215 << 26 === -67108864. Actual: ' + (16777215 << 26));
+}
+
+
+if (33554431 << 26 !== -67108864) {
+ $ERROR('#858: 33554431 << 26 === -67108864. Actual: ' + (33554431 << 26));
+}
+
+
+if (67108863 << 26 !== -67108864) {
+ $ERROR('#859: 67108863 << 26 === -67108864. Actual: ' + (67108863 << 26));
+}
+
+
+if (134217727 << 26 !== -67108864) {
+ $ERROR('#860: 134217727 << 26 === -67108864. Actual: ' + (134217727 << 26));
+}
+
+
+if (268435455 << 26 !== -67108864) {
+ $ERROR('#861: 268435455 << 26 === -67108864. Actual: ' + (268435455 << 26));
+}
+
+
+if (536870911 << 26 !== -67108864) {
+ $ERROR('#862: 536870911 << 26 === -67108864. Actual: ' + (536870911 << 26));
+}
+
+
+if (1073741823 << 26 !== -67108864) {
+ $ERROR('#863: 1073741823 << 26 === -67108864. Actual: ' + (1073741823 << 26));
+}
+
+
+if (2147483647 << 26 !== -67108864) {
+ $ERROR('#864: 2147483647 << 26 === -67108864. Actual: ' + (2147483647 << 26));
+}
+
+
+if (0 << 27 !== 0) {
+ $ERROR('#865: 0 << 27 === 0. Actual: ' + (0 << 27));
+}
+
+
+if (1 << 27 !== 134217728) {
+ $ERROR('#866: 1 << 27 === 134217728. Actual: ' + (1 << 27));
+}
+
+
+if (3 << 27 !== 402653184) {
+ $ERROR('#867: 3 << 27 === 402653184. Actual: ' + (3 << 27));
+}
+
+
+if (7 << 27 !== 939524096) {
+ $ERROR('#868: 7 << 27 === 939524096. Actual: ' + (7 << 27));
+}
+
+
+if (15 << 27 !== 2013265920) {
+ $ERROR('#869: 15 << 27 === 2013265920. Actual: ' + (15 << 27));
+}
+
+
+if (31 << 27 !== -134217728) {
+ $ERROR('#870: 31 << 27 === -134217728. Actual: ' + (31 << 27));
+}
+
+
+if (63 << 27 !== -134217728) {
+ $ERROR('#871: 63 << 27 === -134217728. Actual: ' + (63 << 27));
+}
+
+
+if (127 << 27 !== -134217728) {
+ $ERROR('#872: 127 << 27 === -134217728. Actual: ' + (127 << 27));
+}
+
+
+if (255 << 27 !== -134217728) {
+ $ERROR('#873: 255 << 27 === -134217728. Actual: ' + (255 << 27));
+}
+
+
+if (511 << 27 !== -134217728) {
+ $ERROR('#874: 511 << 27 === -134217728. Actual: ' + (511 << 27));
+}
+
+
+if (1023 << 27 !== -134217728) {
+ $ERROR('#875: 1023 << 27 === -134217728. Actual: ' + (1023 << 27));
+}
+
+
+if (2047 << 27 !== -134217728) {
+ $ERROR('#876: 2047 << 27 === -134217728. Actual: ' + (2047 << 27));
+}
+
+
+if (4095 << 27 !== -134217728) {
+ $ERROR('#877: 4095 << 27 === -134217728. Actual: ' + (4095 << 27));
+}
+
+
+if (8191 << 27 !== -134217728) {
+ $ERROR('#878: 8191 << 27 === -134217728. Actual: ' + (8191 << 27));
+}
+
+
+if (16383 << 27 !== -134217728) {
+ $ERROR('#879: 16383 << 27 === -134217728. Actual: ' + (16383 << 27));
+}
+
+
+if (32767 << 27 !== -134217728) {
+ $ERROR('#880: 32767 << 27 === -134217728. Actual: ' + (32767 << 27));
+}
+
+
+if (65535 << 27 !== -134217728) {
+ $ERROR('#881: 65535 << 27 === -134217728. Actual: ' + (65535 << 27));
+}
+
+
+if (131071 << 27 !== -134217728) {
+ $ERROR('#882: 131071 << 27 === -134217728. Actual: ' + (131071 << 27));
+}
+
+
+if (262143 << 27 !== -134217728) {
+ $ERROR('#883: 262143 << 27 === -134217728. Actual: ' + (262143 << 27));
+}
+
+
+if (524287 << 27 !== -134217728) {
+ $ERROR('#884: 524287 << 27 === -134217728. Actual: ' + (524287 << 27));
+}
+
+
+if (1048575 << 27 !== -134217728) {
+ $ERROR('#885: 1048575 << 27 === -134217728. Actual: ' + (1048575 << 27));
+}
+
+
+if (2097151 << 27 !== -134217728) {
+ $ERROR('#886: 2097151 << 27 === -134217728. Actual: ' + (2097151 << 27));
+}
+
+
+if (4194303 << 27 !== -134217728) {
+ $ERROR('#887: 4194303 << 27 === -134217728. Actual: ' + (4194303 << 27));
+}
+
+
+if (8388607 << 27 !== -134217728) {
+ $ERROR('#888: 8388607 << 27 === -134217728. Actual: ' + (8388607 << 27));
+}
+
+
+if (16777215 << 27 !== -134217728) {
+ $ERROR('#889: 16777215 << 27 === -134217728. Actual: ' + (16777215 << 27));
+}
+
+
+if (33554431 << 27 !== -134217728) {
+ $ERROR('#890: 33554431 << 27 === -134217728. Actual: ' + (33554431 << 27));
+}
+
+
+if (67108863 << 27 !== -134217728) {
+ $ERROR('#891: 67108863 << 27 === -134217728. Actual: ' + (67108863 << 27));
+}
+
+
+if (134217727 << 27 !== -134217728) {
+ $ERROR('#892: 134217727 << 27 === -134217728. Actual: ' + (134217727 << 27));
+}
+
+
+if (268435455 << 27 !== -134217728) {
+ $ERROR('#893: 268435455 << 27 === -134217728. Actual: ' + (268435455 << 27));
+}
+
+
+if (536870911 << 27 !== -134217728) {
+ $ERROR('#894: 536870911 << 27 === -134217728. Actual: ' + (536870911 << 27));
+}
+
+
+if (1073741823 << 27 !== -134217728) {
+ $ERROR('#895: 1073741823 << 27 === -134217728. Actual: ' + (1073741823 << 27));
+}
+
+
+if (2147483647 << 27 !== -134217728) {
+ $ERROR('#896: 2147483647 << 27 === -134217728. Actual: ' + (2147483647 << 27));
+}
+
+
+if (0 << 28 !== 0) {
+ $ERROR('#897: 0 << 28 === 0. Actual: ' + (0 << 28));
+}
+
+
+if (1 << 28 !== 268435456) {
+ $ERROR('#898: 1 << 28 === 268435456. Actual: ' + (1 << 28));
+}
+
+
+if (3 << 28 !== 805306368) {
+ $ERROR('#899: 3 << 28 === 805306368. Actual: ' + (3 << 28));
+}
+
+
+if (7 << 28 !== 1879048192) {
+ $ERROR('#900: 7 << 28 === 1879048192. Actual: ' + (7 << 28));
+}
+
+
+if (15 << 28 !== -268435456) {
+ $ERROR('#901: 15 << 28 === -268435456. Actual: ' + (15 << 28));
+}
+
+
+if (31 << 28 !== -268435456) {
+ $ERROR('#902: 31 << 28 === -268435456. Actual: ' + (31 << 28));
+}
+
+
+if (63 << 28 !== -268435456) {
+ $ERROR('#903: 63 << 28 === -268435456. Actual: ' + (63 << 28));
+}
+
+
+if (127 << 28 !== -268435456) {
+ $ERROR('#904: 127 << 28 === -268435456. Actual: ' + (127 << 28));
+}
+
+
+if (255 << 28 !== -268435456) {
+ $ERROR('#905: 255 << 28 === -268435456. Actual: ' + (255 << 28));
+}
+
+
+if (511 << 28 !== -268435456) {
+ $ERROR('#906: 511 << 28 === -268435456. Actual: ' + (511 << 28));
+}
+
+
+if (1023 << 28 !== -268435456) {
+ $ERROR('#907: 1023 << 28 === -268435456. Actual: ' + (1023 << 28));
+}
+
+
+if (2047 << 28 !== -268435456) {
+ $ERROR('#908: 2047 << 28 === -268435456. Actual: ' + (2047 << 28));
+}
+
+
+if (4095 << 28 !== -268435456) {
+ $ERROR('#909: 4095 << 28 === -268435456. Actual: ' + (4095 << 28));
+}
+
+
+if (8191 << 28 !== -268435456) {
+ $ERROR('#910: 8191 << 28 === -268435456. Actual: ' + (8191 << 28));
+}
+
+
+if (16383 << 28 !== -268435456) {
+ $ERROR('#911: 16383 << 28 === -268435456. Actual: ' + (16383 << 28));
+}
+
+
+if (32767 << 28 !== -268435456) {
+ $ERROR('#912: 32767 << 28 === -268435456. Actual: ' + (32767 << 28));
+}
+
+
+if (65535 << 28 !== -268435456) {
+ $ERROR('#913: 65535 << 28 === -268435456. Actual: ' + (65535 << 28));
+}
+
+
+if (131071 << 28 !== -268435456) {
+ $ERROR('#914: 131071 << 28 === -268435456. Actual: ' + (131071 << 28));
+}
+
+
+if (262143 << 28 !== -268435456) {
+ $ERROR('#915: 262143 << 28 === -268435456. Actual: ' + (262143 << 28));
+}
+
+
+if (524287 << 28 !== -268435456) {
+ $ERROR('#916: 524287 << 28 === -268435456. Actual: ' + (524287 << 28));
+}
+
+
+if (1048575 << 28 !== -268435456) {
+ $ERROR('#917: 1048575 << 28 === -268435456. Actual: ' + (1048575 << 28));
+}
+
+
+if (2097151 << 28 !== -268435456) {
+ $ERROR('#918: 2097151 << 28 === -268435456. Actual: ' + (2097151 << 28));
+}
+
+
+if (4194303 << 28 !== -268435456) {
+ $ERROR('#919: 4194303 << 28 === -268435456. Actual: ' + (4194303 << 28));
+}
+
+
+if (8388607 << 28 !== -268435456) {
+ $ERROR('#920: 8388607 << 28 === -268435456. Actual: ' + (8388607 << 28));
+}
+
+
+if (16777215 << 28 !== -268435456) {
+ $ERROR('#921: 16777215 << 28 === -268435456. Actual: ' + (16777215 << 28));
+}
+
+
+if (33554431 << 28 !== -268435456) {
+ $ERROR('#922: 33554431 << 28 === -268435456. Actual: ' + (33554431 << 28));
+}
+
+
+if (67108863 << 28 !== -268435456) {
+ $ERROR('#923: 67108863 << 28 === -268435456. Actual: ' + (67108863 << 28));
+}
+
+
+if (134217727 << 28 !== -268435456) {
+ $ERROR('#924: 134217727 << 28 === -268435456. Actual: ' + (134217727 << 28));
+}
+
+
+if (268435455 << 28 !== -268435456) {
+ $ERROR('#925: 268435455 << 28 === -268435456. Actual: ' + (268435455 << 28));
+}
+
+
+if (536870911 << 28 !== -268435456) {
+ $ERROR('#926: 536870911 << 28 === -268435456. Actual: ' + (536870911 << 28));
+}
+
+
+if (1073741823 << 28 !== -268435456) {
+ $ERROR('#927: 1073741823 << 28 === -268435456. Actual: ' + (1073741823 << 28));
+}
+
+
+if (2147483647 << 28 !== -268435456) {
+ $ERROR('#928: 2147483647 << 28 === -268435456. Actual: ' + (2147483647 << 28));
+}
+
+
+if (0 << 29 !== 0) {
+ $ERROR('#929: 0 << 29 === 0. Actual: ' + (0 << 29));
+}
+
+
+if (1 << 29 !== 536870912) {
+ $ERROR('#930: 1 << 29 === 536870912. Actual: ' + (1 << 29));
+}
+
+
+if (3 << 29 !== 1610612736) {
+ $ERROR('#931: 3 << 29 === 1610612736. Actual: ' + (3 << 29));
+}
+
+
+if (7 << 29 !== -536870912) {
+ $ERROR('#932: 7 << 29 === -536870912. Actual: ' + (7 << 29));
+}
+
+
+if (15 << 29 !== -536870912) {
+ $ERROR('#933: 15 << 29 === -536870912. Actual: ' + (15 << 29));
+}
+
+
+if (31 << 29 !== -536870912) {
+ $ERROR('#934: 31 << 29 === -536870912. Actual: ' + (31 << 29));
+}
+
+
+if (63 << 29 !== -536870912) {
+ $ERROR('#935: 63 << 29 === -536870912. Actual: ' + (63 << 29));
+}
+
+
+if (127 << 29 !== -536870912) {
+ $ERROR('#936: 127 << 29 === -536870912. Actual: ' + (127 << 29));
+}
+
+
+if (255 << 29 !== -536870912) {
+ $ERROR('#937: 255 << 29 === -536870912. Actual: ' + (255 << 29));
+}
+
+
+if (511 << 29 !== -536870912) {
+ $ERROR('#938: 511 << 29 === -536870912. Actual: ' + (511 << 29));
+}
+
+
+if (1023 << 29 !== -536870912) {
+ $ERROR('#939: 1023 << 29 === -536870912. Actual: ' + (1023 << 29));
+}
+
+
+if (2047 << 29 !== -536870912) {
+ $ERROR('#940: 2047 << 29 === -536870912. Actual: ' + (2047 << 29));
+}
+
+
+if (4095 << 29 !== -536870912) {
+ $ERROR('#941: 4095 << 29 === -536870912. Actual: ' + (4095 << 29));
+}
+
+
+if (8191 << 29 !== -536870912) {
+ $ERROR('#942: 8191 << 29 === -536870912. Actual: ' + (8191 << 29));
+}
+
+
+if (16383 << 29 !== -536870912) {
+ $ERROR('#943: 16383 << 29 === -536870912. Actual: ' + (16383 << 29));
+}
+
+
+if (32767 << 29 !== -536870912) {
+ $ERROR('#944: 32767 << 29 === -536870912. Actual: ' + (32767 << 29));
+}
+
+
+if (65535 << 29 !== -536870912) {
+ $ERROR('#945: 65535 << 29 === -536870912. Actual: ' + (65535 << 29));
+}
+
+
+if (131071 << 29 !== -536870912) {
+ $ERROR('#946: 131071 << 29 === -536870912. Actual: ' + (131071 << 29));
+}
+
+
+if (262143 << 29 !== -536870912) {
+ $ERROR('#947: 262143 << 29 === -536870912. Actual: ' + (262143 << 29));
+}
+
+
+if (524287 << 29 !== -536870912) {
+ $ERROR('#948: 524287 << 29 === -536870912. Actual: ' + (524287 << 29));
+}
+
+
+if (1048575 << 29 !== -536870912) {
+ $ERROR('#949: 1048575 << 29 === -536870912. Actual: ' + (1048575 << 29));
+}
+
+
+if (2097151 << 29 !== -536870912) {
+ $ERROR('#950: 2097151 << 29 === -536870912. Actual: ' + (2097151 << 29));
+}
+
+
+if (4194303 << 29 !== -536870912) {
+ $ERROR('#951: 4194303 << 29 === -536870912. Actual: ' + (4194303 << 29));
+}
+
+
+if (8388607 << 29 !== -536870912) {
+ $ERROR('#952: 8388607 << 29 === -536870912. Actual: ' + (8388607 << 29));
+}
+
+
+if (16777215 << 29 !== -536870912) {
+ $ERROR('#953: 16777215 << 29 === -536870912. Actual: ' + (16777215 << 29));
+}
+
+
+if (33554431 << 29 !== -536870912) {
+ $ERROR('#954: 33554431 << 29 === -536870912. Actual: ' + (33554431 << 29));
+}
+
+
+if (67108863 << 29 !== -536870912) {
+ $ERROR('#955: 67108863 << 29 === -536870912. Actual: ' + (67108863 << 29));
+}
+
+
+if (134217727 << 29 !== -536870912) {
+ $ERROR('#956: 134217727 << 29 === -536870912. Actual: ' + (134217727 << 29));
+}
+
+
+if (268435455 << 29 !== -536870912) {
+ $ERROR('#957: 268435455 << 29 === -536870912. Actual: ' + (268435455 << 29));
+}
+
+
+if (536870911 << 29 !== -536870912) {
+ $ERROR('#958: 536870911 << 29 === -536870912. Actual: ' + (536870911 << 29));
+}
+
+
+if (1073741823 << 29 !== -536870912) {
+ $ERROR('#959: 1073741823 << 29 === -536870912. Actual: ' + (1073741823 << 29));
+}
+
+
+if (2147483647 << 29 !== -536870912) {
+ $ERROR('#960: 2147483647 << 29 === -536870912. Actual: ' + (2147483647 << 29));
+}
+
+
+if (0 << 30 !== 0) {
+ $ERROR('#961: 0 << 30 === 0. Actual: ' + (0 << 30));
+}
+
+
+if (1 << 30 !== 1073741824) {
+ $ERROR('#962: 1 << 30 === 1073741824. Actual: ' + (1 << 30));
+}
+
+
+if (3 << 30 !== -1073741824) {
+ $ERROR('#963: 3 << 30 === -1073741824. Actual: ' + (3 << 30));
+}
+
+
+if (7 << 30 !== -1073741824) {
+ $ERROR('#964: 7 << 30 === -1073741824. Actual: ' + (7 << 30));
+}
+
+
+if (15 << 30 !== -1073741824) {
+ $ERROR('#965: 15 << 30 === -1073741824. Actual: ' + (15 << 30));
+}
+
+
+if (31 << 30 !== -1073741824) {
+ $ERROR('#966: 31 << 30 === -1073741824. Actual: ' + (31 << 30));
+}
+
+
+if (63 << 30 !== -1073741824) {
+ $ERROR('#967: 63 << 30 === -1073741824. Actual: ' + (63 << 30));
+}
+
+
+if (127 << 30 !== -1073741824) {
+ $ERROR('#968: 127 << 30 === -1073741824. Actual: ' + (127 << 30));
+}
+
+
+if (255 << 30 !== -1073741824) {
+ $ERROR('#969: 255 << 30 === -1073741824. Actual: ' + (255 << 30));
+}
+
+
+if (511 << 30 !== -1073741824) {
+ $ERROR('#970: 511 << 30 === -1073741824. Actual: ' + (511 << 30));
+}
+
+
+if (1023 << 30 !== -1073741824) {
+ $ERROR('#971: 1023 << 30 === -1073741824. Actual: ' + (1023 << 30));
+}
+
+
+if (2047 << 30 !== -1073741824) {
+ $ERROR('#972: 2047 << 30 === -1073741824. Actual: ' + (2047 << 30));
+}
+
+
+if (4095 << 30 !== -1073741824) {
+ $ERROR('#973: 4095 << 30 === -1073741824. Actual: ' + (4095 << 30));
+}
+
+
+if (8191 << 30 !== -1073741824) {
+ $ERROR('#974: 8191 << 30 === -1073741824. Actual: ' + (8191 << 30));
+}
+
+
+if (16383 << 30 !== -1073741824) {
+ $ERROR('#975: 16383 << 30 === -1073741824. Actual: ' + (16383 << 30));
+}
+
+
+if (32767 << 30 !== -1073741824) {
+ $ERROR('#976: 32767 << 30 === -1073741824. Actual: ' + (32767 << 30));
+}
+
+
+if (65535 << 30 !== -1073741824) {
+ $ERROR('#977: 65535 << 30 === -1073741824. Actual: ' + (65535 << 30));
+}
+
+
+if (131071 << 30 !== -1073741824) {
+ $ERROR('#978: 131071 << 30 === -1073741824. Actual: ' + (131071 << 30));
+}
+
+
+if (262143 << 30 !== -1073741824) {
+ $ERROR('#979: 262143 << 30 === -1073741824. Actual: ' + (262143 << 30));
+}
+
+
+if (524287 << 30 !== -1073741824) {
+ $ERROR('#980: 524287 << 30 === -1073741824. Actual: ' + (524287 << 30));
+}
+
+
+if (1048575 << 30 !== -1073741824) {
+ $ERROR('#981: 1048575 << 30 === -1073741824. Actual: ' + (1048575 << 30));
+}
+
+
+if (2097151 << 30 !== -1073741824) {
+ $ERROR('#982: 2097151 << 30 === -1073741824. Actual: ' + (2097151 << 30));
+}
+
+
+if (4194303 << 30 !== -1073741824) {
+ $ERROR('#983: 4194303 << 30 === -1073741824. Actual: ' + (4194303 << 30));
+}
+
+
+if (8388607 << 30 !== -1073741824) {
+ $ERROR('#984: 8388607 << 30 === -1073741824. Actual: ' + (8388607 << 30));
+}
+
+
+if (16777215 << 30 !== -1073741824) {
+ $ERROR('#985: 16777215 << 30 === -1073741824. Actual: ' + (16777215 << 30));
+}
+
+
+if (33554431 << 30 !== -1073741824) {
+ $ERROR('#986: 33554431 << 30 === -1073741824. Actual: ' + (33554431 << 30));
+}
+
+
+if (67108863 << 30 !== -1073741824) {
+ $ERROR('#987: 67108863 << 30 === -1073741824. Actual: ' + (67108863 << 30));
+}
+
+
+if (134217727 << 30 !== -1073741824) {
+ $ERROR('#988: 134217727 << 30 === -1073741824. Actual: ' + (134217727 << 30));
+}
+
+
+if (268435455 << 30 !== -1073741824) {
+ $ERROR('#989: 268435455 << 30 === -1073741824. Actual: ' + (268435455 << 30));
+}
+
+
+if (536870911 << 30 !== -1073741824) {
+ $ERROR('#990: 536870911 << 30 === -1073741824. Actual: ' + (536870911 << 30));
+}
+
+
+if (1073741823 << 30 !== -1073741824) {
+ $ERROR('#991: 1073741823 << 30 === -1073741824. Actual: ' + (1073741823 << 30));
+}
+
+
+if (2147483647 << 30 !== -1073741824) {
+ $ERROR('#992: 2147483647 << 30 === -1073741824. Actual: ' + (2147483647 << 30));
+}
+
+
+if (0 << 31 !== 0) {
+ $ERROR('#993: 0 << 31 === 0. Actual: ' + (0 << 31));
+}
+
+
+if (1 << 31 !== -2147483648) {
+ $ERROR('#994: 1 << 31 === -2147483648. Actual: ' + (1 << 31));
+}
+
+
+if (3 << 31 !== -2147483648) {
+ $ERROR('#995: 3 << 31 === -2147483648. Actual: ' + (3 << 31));
+}
+
+
+if (7 << 31 !== -2147483648) {
+ $ERROR('#996: 7 << 31 === -2147483648. Actual: ' + (7 << 31));
+}
+
+
+if (15 << 31 !== -2147483648) {
+ $ERROR('#997: 15 << 31 === -2147483648. Actual: ' + (15 << 31));
+}
+
+
+if (31 << 31 !== -2147483648) {
+ $ERROR('#998: 31 << 31 === -2147483648. Actual: ' + (31 << 31));
+}
+
+
+if (63 << 31 !== -2147483648) {
+ $ERROR('#999: 63 << 31 === -2147483648. Actual: ' + (63 << 31));
+}
+
+
+if (127 << 31 !== -2147483648) {
+ $ERROR('#1000: 127 << 31 === -2147483648. Actual: ' + (127 << 31));
+}
+
+
+if (255 << 31 !== -2147483648) {
+ $ERROR('#1001: 255 << 31 === -2147483648. Actual: ' + (255 << 31));
+}
+
+
+if (511 << 31 !== -2147483648) {
+ $ERROR('#1002: 511 << 31 === -2147483648. Actual: ' + (511 << 31));
+}
+
+
+if (1023 << 31 !== -2147483648) {
+ $ERROR('#1003: 1023 << 31 === -2147483648. Actual: ' + (1023 << 31));
+}
+
+
+if (2047 << 31 !== -2147483648) {
+ $ERROR('#1004: 2047 << 31 === -2147483648. Actual: ' + (2047 << 31));
+}
+
+
+if (4095 << 31 !== -2147483648) {
+ $ERROR('#1005: 4095 << 31 === -2147483648. Actual: ' + (4095 << 31));
+}
+
+
+if (8191 << 31 !== -2147483648) {
+ $ERROR('#1006: 8191 << 31 === -2147483648. Actual: ' + (8191 << 31));
+}
+
+
+if (16383 << 31 !== -2147483648) {
+ $ERROR('#1007: 16383 << 31 === -2147483648. Actual: ' + (16383 << 31));
+}
+
+
+if (32767 << 31 !== -2147483648) {
+ $ERROR('#1008: 32767 << 31 === -2147483648. Actual: ' + (32767 << 31));
+}
+
+
+if (65535 << 31 !== -2147483648) {
+ $ERROR('#1009: 65535 << 31 === -2147483648. Actual: ' + (65535 << 31));
+}
+
+
+if (131071 << 31 !== -2147483648) {
+ $ERROR('#1010: 131071 << 31 === -2147483648. Actual: ' + (131071 << 31));
+}
+
+
+if (262143 << 31 !== -2147483648) {
+ $ERROR('#1011: 262143 << 31 === -2147483648. Actual: ' + (262143 << 31));
+}
+
+
+if (524287 << 31 !== -2147483648) {
+ $ERROR('#1012: 524287 << 31 === -2147483648. Actual: ' + (524287 << 31));
+}
+
+
+if (1048575 << 31 !== -2147483648) {
+ $ERROR('#1013: 1048575 << 31 === -2147483648. Actual: ' + (1048575 << 31));
+}
+
+
+if (2097151 << 31 !== -2147483648) {
+ $ERROR('#1014: 2097151 << 31 === -2147483648. Actual: ' + (2097151 << 31));
+}
+
+
+if (4194303 << 31 !== -2147483648) {
+ $ERROR('#1015: 4194303 << 31 === -2147483648. Actual: ' + (4194303 << 31));
+}
+
+
+if (8388607 << 31 !== -2147483648) {
+ $ERROR('#1016: 8388607 << 31 === -2147483648. Actual: ' + (8388607 << 31));
+}
+
+
+if (16777215 << 31 !== -2147483648) {
+ $ERROR('#1017: 16777215 << 31 === -2147483648. Actual: ' + (16777215 << 31));
+}
+
+
+if (33554431 << 31 !== -2147483648) {
+ $ERROR('#1018: 33554431 << 31 === -2147483648. Actual: ' + (33554431 << 31));
+}
+
+
+if (67108863 << 31 !== -2147483648) {
+ $ERROR('#1019: 67108863 << 31 === -2147483648. Actual: ' + (67108863 << 31));
+}
+
+
+if (134217727 << 31 !== -2147483648) {
+ $ERROR('#1020: 134217727 << 31 === -2147483648. Actual: ' + (134217727 << 31));
+}
+
+
+if (268435455 << 31 !== -2147483648) {
+ $ERROR('#1021: 268435455 << 31 === -2147483648. Actual: ' + (268435455 << 31));
+}
+
+
+if (536870911 << 31 !== -2147483648) {
+ $ERROR('#1022: 536870911 << 31 === -2147483648. Actual: ' + (536870911 << 31));
+}
+
+
+if (1073741823 << 31 !== -2147483648) {
+ $ERROR('#1023: 1073741823 << 31 === -2147483648. Actual: ' + (1073741823 << 31));
+}
+
+
+if (2147483647 << 31 !== -2147483648) {
+ $ERROR('#1024: 2147483647 << 31 === -2147483648. Actual: ' + (2147483647 << 31));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A5.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A5.1_T1.js
new file mode 100644
index 000000000..c619eee1a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A5.1_T1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A5.1_T1;
+ * @section: 11.7.1, 9.5;
+ * @assertion: Operator x << y uses ToInt32(ShiftExpression);
+ * @description: Checking boundary points;
+ */
+
+//CHECK#1
+if (2147483648.1 << 0 !== -2147483648) {
+ $ERROR('#1: 2147483648.1 << 0 === -2147483648. Actual: ' + (2147483648.1 << 0));
+}
+
+//CHECK#2
+if (4294967296.1 << 0 !== 0) {
+ $ERROR('#2: 4294967296.1 << 0 === 0. Actual: ' + (4294967296.1 << 0));
+}
+
+//CHECK#3
+if (6442450944.1 << 0 !== -2147483648) {
+ $ERROR('#3: 6442450944.1 << 0 === -2147483648. Actual: ' + (6442450944.1 << 0));
+}
+
+//CHECK#4
+if (4294967295.1 << 0 !== -1) {
+ $ERROR('#4: 4294967295.1 << 0 === -1. Actual: ' + (4294967295.1 << 0));
+}
+
+//CHECK#5
+if (6442450943.1 << 0 !== 2147483647) {
+ $ERROR('#5: 6442450943.1 << 0 === 2147483647. Actual: ' + (6442450943.1 << 0));
+}
+
+//CHECK#6
+if (-2147483649.1 << 0 !== 2147483647) {
+ $ERROR('#6: -2147483649.1 << 0 === 2147483647. Actual: ' + (-2147483649.1 << 0));
+}
+
+//CHECK#7
+if (-4294967297.1 << 0 !== -1) {
+ $ERROR('#7: -4294967297.1 << 0 === -1. Actual: ' + (-4294967297.1 << 0));
+}
+
+//CHECK#8
+if (-6442450945.1 << 0 !== 2147483647) {
+ $ERROR('#8: -6442450945.1 << 0 === 2147483647. Actual: ' + (-6442450945.1 << 0));
+}
+
+//CHECK#9
+if (-4294967296.1 << 0 !== 0) {
+ $ERROR('#9: -4294967296.1 << 0 === 0 . Actual: ' + (-4294967296.1 << 0));
+}
+
+//CHECK#10
+if (-6442450944.1 << 0 !== -2147483648) {
+ $ERROR('#10: -6442450944.1 << 0 === -2147483648. Actual: ' + (-6442450944.1 << 0));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A5.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A5.2_T1.js
new file mode 100644
index 000000000..5ae6d18f7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.1_The_Left_shift_Operator/S11.7.1_A5.2_T1.js
@@ -0,0 +1,329 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.1_A5.2_T1;
+ * @section: 11.7.1, 9.5;
+ * @assertion: Operator x << y uses ToUint32(AdditiveExpression) & 31;
+ * @description: Checking distinct points;
+ */
+
+//CHECK#1
+if (1 << -32.1 !== 1) {
+ $ERROR('#1: 1 << -32.1 === 1. Actual: ' + (1 << -32.1));
+}
+
+//CHECK#2
+if (1 << -31.1 !== 2) {
+ $ERROR('#2: 1 << -31.1 === 2. Actual: ' + (1 << -31.1));
+}
+
+//CHECK#3
+if (1 << -30.1 !== 4) {
+ $ERROR('#3: 1 << -30.1 === 4. Actual: ' + (1 << -30.1));
+}
+
+//CHECK#4
+if (1 << -29.1 !== 8) {
+ $ERROR('#4: 1 << -29.1 === 8. Actual: ' + (1 << -29.1));
+}
+
+//CHECK#5
+if (1 << -28.1 !== 16) {
+ $ERROR('#5: 1 << -28.1 === 16. Actual: ' + (1 << -28.1));
+}
+
+//CHECK#6
+if (1 << -27.1 !== 32) {
+ $ERROR('#6: 1 << -27.1 === 32. Actual: ' + (1 << -27.1));
+}
+
+//CHECK#7
+if (1 << -26.1 !== 64) {
+ $ERROR('#7: 1 << -26.1 === 64. Actual: ' + (1 << -26.1));
+}
+
+//CHECK#8
+if (1 << -25.1 !== 128) {
+ $ERROR('#8: 1 << -25.1 === 128. Actual: ' + (1 << -25.1));
+}
+
+//CHECK#9
+if (1 << -24.1 !== 256) {
+ $ERROR('#9: 1 << -24.1 === 256. Actual: ' + (1 << -24.1));
+}
+
+//CHECK#10
+if (1 << -23.1 !== 512) {
+ $ERROR('#10: 1 << -23.1 === 512. Actual: ' + (1 << -23.1));
+}
+
+//CHECK#11
+if (1 << -22.1 !== 1024) {
+ $ERROR('#11: 1 << -22.1 === 1024. Actual: ' + (1 << -22.1));
+}
+
+//CHECK#12
+if (1 << -21.1 !== 2048) {
+ $ERROR('#12: 1 << -21.1 === 2048. Actual: ' + (1 << -21.1));
+}
+
+//CHECK#13
+if (1 << -20.1 !== 4096) {
+ $ERROR('#13: 1 << -20.1 === 4096. Actual: ' + (1 << -20.1));
+}
+
+//CHECK#14
+if (1 << -19.1 !== 8192) {
+ $ERROR('#14: 1 << -19.1 === 8192. Actual: ' + (1 << -19.1));
+}
+
+//CHECK#15
+if (1 << -18.1 !== 16384) {
+ $ERROR('#15: 1 << -18.1 === 16384. Actual: ' + (1 << -18.1));
+}
+
+//CHECK#16
+if (1 << -17.1 !== 32768) {
+ $ERROR('#16: 1 << -17.1 === 32768. Actual: ' + (1 << -17.1));
+}
+
+//CHECK#17
+if (1 << -16.1 !== 65536) {
+ $ERROR('#17: 1 << -16.1 === 65536. Actual: ' + (1 << -16.1));
+}
+
+//CHECK#18
+if (1 << -15.1 !== 131072) {
+ $ERROR('#18: 1 << -15.1 === 131072. Actual: ' + (1 << -15.1));
+}
+
+//CHECK#19
+if (1 << -14.1 !== 262144) {
+ $ERROR('#19: 1 << -14.1 === 262144. Actual: ' + (1 << -14.1));
+}
+
+//CHECK#20
+if (1 << -13.1 !== 524288) {
+ $ERROR('#20: 1 << -13.1 === 524288. Actual: ' + (1 << -13.1));
+}
+
+//CHECK#21
+if (1 << -12.1 !== 1048576) {
+ $ERROR('#21: 1 << -12.1 === 1048576. Actual: ' + (1 << -12.1));
+}
+
+//CHECK#22
+if (1 << -11.1 !== 2097152) {
+ $ERROR('#22: 1 << -11.1 === 2097152. Actual: ' + (1 << -11.1));
+}
+
+//CHECK#23
+if (1 << -10.1 !== 4194304) {
+ $ERROR('#23: 1 << -10.1 === 4194304. Actual: ' + (1 << -10.1));
+}
+
+//CHECK#24
+if (1 << -9.1 !== 8388608) {
+ $ERROR('#24: 1 << -9.1 === 8388608. Actual: ' + (1 << -9.1));
+}
+
+//CHECK#25
+if (1 << -8.1 !== 16777216) {
+ $ERROR('#25: 1 << -8.1 === 16777216. Actual: ' + (1 << -8.1));
+}
+
+//CHECK#26
+if (1 << -7.1 !== 33554432) {
+ $ERROR('#26: 1 << -7.1 === 33554432. Actual: ' + (1 << -7.1));
+}
+
+//CHECK#27
+if (1 << -6.1 !== 67108864) {
+ $ERROR('#27: 1 << -6.1 === 67108864. Actual: ' + (1 << -6.1));
+}
+
+//CHECK#28
+if (1 << -5.1 !== 134217728) {
+ $ERROR('#28: 1 << -5.1 === 134217728. Actual: ' + (1 << -5.1));
+}
+
+//CHECK#29
+if (1 << -4.1 !== 268435456) {
+ $ERROR('#29: 1 << -4.1 === 268435456. Actual: ' + (1 << -4.1));
+}
+
+//CHECK#30
+if (1 << -3.1 !== 536870912) {
+ $ERROR('#30: 1 << -3.1 === 536870912. Actual: ' + (1 << -3.1));
+}
+
+//CHECK#31
+if (1 << -2.1 !== 1073741824) {
+ $ERROR('#31: 1 << -2.1 === 1073741824. Actual: ' + (1 << -2.1));
+}
+
+//CHECK#32
+if (1 << -1.1 !== -2147483648) {
+ $ERROR('#32: 1 << -1.1 === -2147483648. Actual: ' + (1 << -1.1));
+}
+
+//CHECK#33
+if (1 << 32.1 !== 1) {
+ $ERROR('#33: 1 << 32.1 === 1. Actual: ' + (1 << 32.1));
+}
+
+//CHECK#34
+if (1 << 33.1 !== 2) {
+ $ERROR('#34: 1 << 33.1 === 2. Actual: ' + (1 << 33.1));
+}
+
+//CHECK#35
+if (1 << 34.1 !== 4) {
+ $ERROR('#35: 1 << 34.1 === 4. Actual: ' + (1 << 34.1));
+}
+
+//CHECK#36
+if (1 << 35.1 !== 8) {
+ $ERROR('#36: 1 << 35.1 === 8. Actual: ' + (1 << 35.1));
+}
+
+//CHECK#37
+if (1 << 36.1 !== 16) {
+ $ERROR('#37: 1 << 36.1 === 16. Actual: ' + (1 << 36.1));
+}
+
+//CHECK#38
+if (1 << 37.1 !== 32) {
+ $ERROR('#38: 1 << 37.1 === 32. Actual: ' + (1 << 37.1));
+}
+
+//CHECK#39
+if (1 << 38.1 !== 64) {
+ $ERROR('#39: 1 << 38.1 === 64. Actual: ' + (1 << 38.1));
+}
+
+//CHECK#40
+if (1 << 39.1 !== 128) {
+ $ERROR('#40: 1 << 39.1 === 128. Actual: ' + (1 << 39.1));
+}
+
+//CHECK#41
+if (1 << 40.1 !== 256) {
+ $ERROR('#41: 1 << 40.1 === 256. Actual: ' + (1 << 40.1));
+}
+
+//CHECK#42
+if (1 << 41.1 !== 512) {
+ $ERROR('#42: 1 << 41.1 === 512. Actual: ' + (1 << 41.1));
+}
+
+//CHECK#43
+if (1 << 42.1 !== 1024) {
+ $ERROR('#43: 1 << 42.1 === 1024. Actual: ' + (1 << 42.1));
+}
+
+//CHECK#44
+if (1 << 43.1 !== 2048) {
+ $ERROR('#44: 1 << 43.1 === 2048. Actual: ' + (1 << 43.1));
+}
+
+//CHECK#45
+if (1 << 44.1 !== 4096) {
+ $ERROR('#45: 1 << 44.1 === 4096. Actual: ' + (1 << 44.1));
+}
+
+//CHECK#46
+if (1 << 45.1 !== 8192) {
+ $ERROR('#46: 1 << 45.1 === 8192. Actual: ' + (1 << 45.1));
+}
+
+//CHECK#47
+if (1 << 46.1 !== 16384) {
+ $ERROR('#47: 1 << 46.1 === 16384. Actual: ' + (1 << 46.1));
+}
+
+//CHECK#48
+if (1 << 47.1 !== 32768) {
+ $ERROR('#48: 1 << 47.1 === 32768. Actual: ' + (1 << 47.1));
+}
+
+//CHECK#49
+if (1 << 48.1 !== 65536) {
+ $ERROR('#49: 1 << 48.1 === 65536. Actual: ' + (1 << 48.1));
+}
+
+//CHECK#50
+if (1 << 49.1 !== 131072) {
+ $ERROR('#50: 1 << 49.1 === 131072. Actual: ' + (1 << 49.1));
+}
+
+//CHECK#51
+if (1 << 50.1 !== 262144) {
+ $ERROR('#51: 1 << 50.1 === 262144. Actual: ' + (1 << 50.1));
+}
+
+//CHECK#52
+if (1 << 51.1 !== 524288) {
+ $ERROR('#52: 1 << 51.1 === 524288. Actual: ' + (1 << 51.1));
+}
+
+//CHECK#53
+if (1 << 52.1 !== 1048576) {
+ $ERROR('#53: 1 << 52.1 === 1048576. Actual: ' + (1 << 52.1));
+}
+
+//CHECK#54
+if (1 << 53.1 !== 2097152) {
+ $ERROR('#54: 1 << 53.1 === 2097152. Actual: ' + (1 << 53.1));
+}
+
+//CHECK#55
+if (1 << 54.1 !== 4194304) {
+ $ERROR('#55: 1 << 54.1 === 4194304. Actual: ' + (1 << 54.1));
+}
+
+//CHECK#56
+if (1 << 55.1 !== 8388608) {
+ $ERROR('#56: 1 << 55.1 === 8388608. Actual: ' + (1 << 55.1));
+}
+
+//CHECK#57
+if (1 << 56.1 !== 16777216) {
+ $ERROR('#57: 1 << 56.1 === 16777216. Actual: ' + (1 << 56.1));
+}
+
+//CHECK#58
+if (1 << 57.1 !== 33554432) {
+ $ERROR('#58: 1 << 57.1 === 33554432. Actual: ' + (1 << 57.1));
+}
+
+//CHECK#59
+if (1 << 58.1 !== 67108864) {
+ $ERROR('#59: 1 << 58.1 === 67108864. Actual: ' + (1 << 58.1));
+}
+
+//CHECK#60
+if (1 << 59.1 !== 134217728) {
+ $ERROR('#60: 1 << 59.1 === 134217728. Actual: ' + (1 << 59.1));
+}
+
+//CHECK#61
+if (1 << 60.1 !== 268435456) {
+ $ERROR('#61: 1 << 60.1 === 268435456. Actual: ' + (1 << 60.1));
+}
+
+//CHECK#62
+if (1 << 61.1 !== 536870912) {
+ $ERROR('#62: 1 << 61.1 === 536870912. Actual: ' + (1 << 61.1));
+}
+
+//CHECK#63
+if (1 << 62.1 !== 1073741824) {
+ $ERROR('#63: 1 << 62.1 === 1073741824. Actual: ' + (1 << 62.1));
+}
+
+//CHECK#64
+if (1 << 63.1 !== -2147483648) {
+ $ERROR('#64: 1 << 63.1 === -2147483648. Actual: ' + (1 << 63.1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A1.js
new file mode 100644
index 000000000..238775f7c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.7.2_A1;
+* @section: 11.7.2, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between ShiftExpression and ">>" or between ">>" and AdditiveExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("-4\u0009>>\u00091") !== -2) {
+ $ERROR('#1: -4\\u0009>>\\u00091 === -2');
+}
+
+//CHECK#2
+if (eval("-4\u000B>>\u000B1") !== -2) {
+ $ERROR('#2: -4\\u000B>>\\u000B1 === -2');
+}
+
+//CHECK#3
+if (eval("-4\u000C>>\u000C1") !== -2) {
+ $ERROR('#3: -4\\u000C>>\\u000C1 === -2');
+}
+
+//CHECK#4
+if (eval("-4\u0020>>\u00201") !== -2) {
+ $ERROR('#4: -4\\u0020>>\\u00201 === -2');
+}
+
+//CHECK#5
+if (eval("-4\u00A0>>\u00A01") !== -2) {
+ $ERROR('#5: -4\\u00A0>>\\u00A01 === -2');
+}
+
+//CHECK#6
+if (eval("-4\u000A>>\u000A1") !== -2) {
+ $ERROR('#6: -4\\u000A>>\\u000A1 === -2');
+}
+
+//CHECK#7
+if (eval("-4\u000D>>\u000D1") !== -2) {
+ $ERROR('#7: -4\\u000D>>\\u000D1 === -2');
+}
+
+//CHECK#8
+if (eval("-4\u2028>>\u20281") !== -2) {
+ $ERROR('#8: -4\\u2028>>\\u20281 === -2');
+}
+
+//CHECK#9
+if (eval("-4\u2029>>\u20291") !== -2) {
+ $ERROR('#9: -4\\u2029>>\\u20291 === -2');
+}
+
+//CHECK#10
+if (eval("-4\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029>>\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== -2) {
+ $ERROR('#10: -4\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029>>\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === -2');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T1.js
new file mode 100644
index 000000000..1469a5261
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.7.2_A2.1_T1;
+* @section: 11.7.2;
+* @assertion: Operator x >> y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (-4 >> 1 !== -2) {
+ $ERROR('#1: -4 >> 1 === -2. Actual: ' + (-4 >> 1));
+}
+
+//CHECK#2
+var x = -4;
+if (x >> 1 !== -2) {
+ $ERROR('#2: var x = -4; x >> 1 === -2. Actual: ' + (x >> 1));
+}
+
+//CHECK#3
+var y = 1;
+if (-4 >> y !== -2) {
+ $ERROR('#3: var y = 1; -4 >> y === -2. Actual: ' + (-4 >> y));
+}
+
+//CHECK#4
+var x = -4;
+var y = 1;
+if (x >> y !== -2) {
+ $ERROR('#4: var x = -4; var y = 1; x >> y === -2. Actual: ' + (x >> y));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = -4;
+objecty.prop = 1;
+if (objectx.prop >> objecty.prop !== -2) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = -4; objecty.prop = 1; objectx.prop >> objecty.prop === -2. Actual: ' + (objectx.prop >> objecty.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T2.js
new file mode 100644
index 000000000..58ca08fa8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A2.1_T2;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x >> 1;
+ $ERROR('#1.1: x >> 1 throw ReferenceError. Actual: ' + (x >> 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x >> 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T3.js
new file mode 100644
index 000000000..9ac3aa0bf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A2.1_T3;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 >> y;
+ $ERROR('#1.1: 1 >> y throw ReferenceError. Actual: ' + (1 >> y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 >> y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.2_T1.js
new file mode 100644
index 000000000..646f92798
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A2.2_T1;
+ * @section: 11.7.2, 8.6.2.6;
+ * @assertion: Operator x >> y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return -4}} >> 1 !== -2) {
+ $ERROR('#1: {valueOf: function() {return -4}} >> 1 === -2. Actual: ' + ({valueOf: function() {return -4}} >> 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return -4}, toString: function() {return 0}} >> 1 !== -2) {
+ $ERROR('#2: {valueOf: function() {return -4}, toString: function() {return 0}} >> 1 === -2. Actual: ' + ({valueOf: function() {return -4}, toString: function() {return 0}} >> 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return -4}, toString: function() {return {}}} >> 1 !== -2) {
+ $ERROR('#3: {valueOf: function() {return -4}, toString: function() {return {}}} >> 1 === -2. Actual: ' + ({valueOf: function() {return -4}, toString: function() {return {}}} >> 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return -4}, toString: function() {throw "error"}} >> 1 !== -2) {
+ $ERROR('#4.1: {valueOf: function() {return -4}, toString: function() {throw "error"}} >> 1 === -2. Actual: ' + ({valueOf: function() {return -4}, toString: function() {throw "error"}} >> 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return -4}, toString: function() {throw "error"}} >> 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return -4}, toString: function() {throw "error"}} >> 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (-4 >> {toString: function() {return 1}} !== -2) {
+ $ERROR('#5: -4 >> {toString: function() {return 1}} === -2. Actual: ' + (-4 >> {toString: function() {return 1}}));
+}
+
+//CHECK#6
+if (-4 >> {valueOf: function() {return {}}, toString: function() {return 1}} !== -2) {
+ $ERROR('#6: -4 >> {valueOf: function() {return {}}, toString: function() {return 1}} === -2. Actual: ' + (-4 >> {valueOf: function() {return {}}, toString: function() {return 1}}));
+}
+
+//CHECK#7
+try {
+ -4 >> {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: -4 >> {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (-4 >> {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: -4 >> {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ -4 >> {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: -4 >> {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (-4 >> {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: -4 >> {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.3_T1.js
new file mode 100644
index 000000000..fba3668e8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A2.3_T1;
+ * @section: 11.7.2;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x >> y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x >> y throw "x". Actual: ' + (x >> y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToNumber(first expression) is called first, and then ToNumber(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x >> y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T1.js
new file mode 100644
index 000000000..2a70c67ab
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A2.4_T1;
+ * @section: 11.7.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) >> x !== 0) {
+ $ERROR('#1: var x = 0; (x = 1) >> x === 0. Actual: ' + ((x = 1) >> x));
+}
+
+//CHECK#2
+var x = -4;
+if (x >> (x = 1) !== -2) {
+ $ERROR('#2: var x = -4; x >> (x = 1) === -2. Actual: ' + (x >> (x = 1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T2.js
new file mode 100644
index 000000000..4168d109d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A2.4_T2;
+ * @section: 11.7.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() >> y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() >> y() throw "x". Actual: ' + (x() >> y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() >> y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T3.js
new file mode 100644
index 000000000..b426d1f7f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A2.4_T3;
+ * @section: 11.7.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x >> (x = 1);
+ $ERROR('#1.1: x >> (x = 1) throw ReferenceError. Actual: ' + (x >> (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x >> (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) >> y !== 0) {
+ $ERROR('#2: (y = 1) >> y === 0. Actual: ' + ((y = 1) >> y));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.1.js
new file mode 100644
index 000000000..18a22e690
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T1.1;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true >> true !== 0) {
+ $ERROR('#1: true >> true === 0. Actual: ' + (true >> true));
+}
+
+//CHECK#2
+if (new Boolean(true) >> true !== 0) {
+ $ERROR('#2: new Boolean(true) >> true === 0. Actual: ' + (new Boolean(true) >> true));
+}
+
+//CHECK#3
+if (true >> new Boolean(true) !== 0) {
+ $ERROR('#3: true >> new Boolean(true) === 0. Actual: ' + (true >> new Boolean(true)));
+}
+
+//CHECK#4
+if (new Boolean(true) >> new Boolean(true) !== 0) {
+ $ERROR('#4: new Boolean(true) >> new Boolean(true) === 0. Actual: ' + (new Boolean(true) >> new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.2.js
new file mode 100644
index 000000000..8385d7509
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T1.2;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 >> 1 !== 0) {
+ $ERROR('#1: 1 >> 1 === 0. Actual: ' + (1 >> 1));
+}
+
+//CHECK#2
+if (new Number(1) >> 1 !== 0) {
+ $ERROR('#2: new Number(1) >> 1 === 0. Actual: ' + (new Number(1) >> 1));
+}
+
+//CHECK#3
+if (1 >> new Number(1) !== 0) {
+ $ERROR('#3: 1 >> new Number(1) === 0. Actual: ' + (1 >> new Number(1)));
+}
+
+//CHECK#4
+if (new Number(1) >> new Number(1) !== 0) {
+ $ERROR('#4: new Number(1) >> new Number(1) === 0. Actual: ' + (new Number(1) >> new Number(1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.3.js
new file mode 100644
index 000000000..690d27e5e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T1.3;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" >> "1" !== 0) {
+ $ERROR('#1: "1" >> "1" === 0. Actual: ' + ("1" >> "1"));
+}
+
+//CHECK#2
+if (new String("1") >> "1" !== 0) {
+ $ERROR('#2: new String("1") >> "1" === 0. Actual: ' + (new String("1") >> "1"));
+}
+
+//CHECK#3
+if ("1" >> new String("1") !== 0) {
+ $ERROR('#3: "1" >> new String("1") === 0. Actual: ' + ("1" >> new String("1")));
+}
+
+//CHECK#4
+if (new String("1") >> new String("1") !== 0) {
+ $ERROR('#4: new String("1") >> new String("1") === 0. Actual: ' + (new String("1") >> new String("1")));
+}
+
+//CHECK#5
+if ("x" >> "1" !== 0) {
+ $ERROR('#5: "x" >> "1" === 0. Actual: ' + ("x" >> "1"));
+}
+
+//CHECK#6
+if ("1" >> "x" !== 1) {
+ $ERROR('#6: "1" >> "x" === 1. Actual: ' + ("1" >> "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.4.js
new file mode 100644
index 000000000..ba2d5ccbe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T1.4;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (null >> undefined !== 0) {
+ $ERROR('#1: null >> undefined === 0. Actual: ' + (null >> undefined));
+}
+
+//CHECK#2
+if (undefined >> null !== 0) {
+ $ERROR('#2: undefined >> null === 0. Actual: ' + (undefined >> null));
+}
+
+//CHECK#3
+if (undefined >> undefined !== 0) {
+ $ERROR('#3: undefined >> undefined === 0. Actual: ' + (undefined >> undefined));
+}
+
+//CHECK#4
+if (null >> null !== 0) {
+ $ERROR('#4: null >> null === 0. Actual: ' + (null >> null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.5.js
new file mode 100644
index 000000000..134e3bf5d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T1.5.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T1.5;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (({} >> function(){return 1}) !== 0) {
+ $ERROR('#1: ({} >> function(){return 1}) === 0. Actual: ' + (({} >> function(){return 1})));
+}
+
+//CHECK#2
+if ((function(){return 1} >> {}) !== 0) {
+ $ERROR('#2: (function(){return 1} >> {}) === 0. Actual: ' + ((function(){return 1} >> {})));
+}
+
+//CHECK#3
+if ((function(){return 1} >> function(){return 1}) !== 0) {
+ $ERROR('#3: (function(){return 1} >> function(){return 1}) === 0. Actual: ' + ((function(){return 1} >> function(){return 1})));
+}
+
+//CHECK#4
+if (({} >> {}) !== 0) {
+ $ERROR('#4: ({} >> {}) === 0. Actual: ' + (({} >> {})));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.1.js
new file mode 100644
index 000000000..10f291659
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T2.1;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if (true >> 1 !== 0) {
+ $ERROR('#1: true >> 1 === 0. Actual: ' + (true >> 1));
+}
+
+//CHECK#2
+if (1 >> true !== 0) {
+ $ERROR('#2: 1 >> true === 0. Actual: ' + (1 >> true));
+}
+
+//CHECK#3
+if (new Boolean(true) >> 1 !== 0) {
+ $ERROR('#3: new Boolean(true) >> 1 === 0. Actual: ' + (new Boolean(true) >> 1));
+}
+
+//CHECK#4
+if (1 >> new Boolean(true) !== 0) {
+ $ERROR('#4: 1 >> new Boolean(true) === 0. Actual: ' + (1 >> new Boolean(true)));
+}
+
+//CHECK#5
+if (true >> new Number(1) !== 0) {
+ $ERROR('#5: true >> new Number(1) === 0. Actual: ' + (true >> new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) >> true !== 0) {
+ $ERROR('#6: new Number(1) >> true === 0. Actual: ' + (new Number(1) >> true));
+}
+
+//CHECK#7
+if (new Boolean(true) >> new Number(1) !== 0) {
+ $ERROR('#7: new Boolean(true) >> new Number(1) === 0. Actual: ' + (new Boolean(true) >> new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) >> new Boolean(true) !== 0) {
+ $ERROR('#8: new Number(1) >> new Boolean(true) === 0. Actual: ' + (new Number(1) >> new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.2.js
new file mode 100644
index 000000000..7a2078ebc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T2.2;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" >> 1 !== 0) {
+ $ERROR('#1: "1" >> 1 === 0. Actual: ' + ("1" >> 1));
+}
+
+//CHECK#2
+if (1 >> "1" !== 0) {
+ $ERROR('#2: 1 >> "1" === 0. Actual: ' + (1 >> "1"));
+}
+
+//CHECK#3
+if (new String("1") >> 1 !== 0) {
+ $ERROR('#3: new String("1") >> 1 === 0. Actual: ' + (new String("1") >> 1));
+}
+
+//CHECK#4
+if (1 >> new String("1") !== 0) {
+ $ERROR('#4: 1 >> new String("1") === 0. Actual: ' + (1 >> new String("1")));
+}
+
+//CHECK#5
+if ("1" >> new Number(1) !== 0) {
+ $ERROR('#5: "1" >> new Number(1) === 0. Actual: ' + ("1" >> new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) >> "1" !== 0) {
+ $ERROR('#6: new Number(1) >> "1" === 0. Actual: ' + (new Number(1) >> "1"));
+}
+
+//CHECK#7
+if (new String("1") >> new Number(1) !== 0) {
+ $ERROR('#7: new String("1") >> new Number(1) === 0. Actual: ' + (new String("1") >> new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) >> new String("1") !== 0) {
+ $ERROR('#8: new Number(1) >> new String("1") === 0. Actual: ' + (new Number(1) >> new String("1")));
+}
+
+//CHECK#9
+if ("x" >> 1 !== 0) {
+ $ERROR('#9: "x" >> 1 === 0. Actual: ' + ("x" >> 1));
+}
+
+//CHECK#10
+if (1 >> "x" !== 1) {
+ $ERROR('#10: 1 >> "x" === 1. Actual: ' + (1 >> "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.3.js
new file mode 100644
index 000000000..0b148f33d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T2.3;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 >> null !== 1) {
+ $ERROR('#1: 1 >> null === 1. Actual: ' + (1 >> null));
+}
+
+//CHECK#2
+if (null >> 1 !== 0) {
+ $ERROR('#2: null >> 1 === 0. Actual: ' + (null >> 1));
+}
+
+//CHECK#3
+if (new Number(1) >> null !== 1) {
+ $ERROR('#3: new Number(1) >> null === 1. Actual: ' + (new Number(1) >> null));
+}
+
+//CHECK#4
+if (null >> new Number(1) !== 0) {
+ $ERROR('#4: null >> new Number(1) === 0. Actual: ' + (null >> new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.4.js
new file mode 100644
index 000000000..f7f461f66
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T2.4;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (1 >> undefined !== 1) {
+ $ERROR('#1: 1 >> undefined === 1. Actual: ' + (1 >> undefined));
+}
+
+//CHECK#2
+if (undefined >> 1 !== 0) {
+ $ERROR('#2: undefined >> 1 === 0. Actual: ' + (undefined >> 1));
+}
+
+//CHECK#3
+if (new Number(1) >> undefined !== 1) {
+ $ERROR('#3: new Number(1) >> undefined === 1. Actual: ' + (new Number(1) >> undefined));
+}
+
+//CHECK#4
+if (undefined >> new Number(1) !== 0) {
+ $ERROR('#4: undefined >> new Number(1) === 0. Actual: ' + (undefined >> new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.5.js
new file mode 100644
index 000000000..6c5d897be
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T2.5;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true >> "1" !== 0) {
+ $ERROR('#1: true >> "1" === 0. Actual: ' + (true >> "1"));
+}
+
+//CHECK#2
+if ("1" >> true !== 0) {
+ $ERROR('#2: "1" >> true === 0. Actual: ' + ("1" >> true));
+}
+
+//CHECK#3
+if (new Boolean(true) >> "1" !== 0) {
+ $ERROR('#3: new Boolean(true) >> "1" === 0. Actual: ' + (new Boolean(true) >> "1"));
+}
+
+//CHECK#4
+if ("1" >> new Boolean(true) !== 0) {
+ $ERROR('#4: "1" >> new Boolean(true) === 0. Actual: ' + ("1" >> new Boolean(true)));
+}
+
+//CHECK#5
+if (true >> new String("1") !== 0) {
+ $ERROR('#5: true >> new String("1") === 0. Actual: ' + (true >> new String("1")));
+}
+
+//CHECK#6
+if (new String("1") >> true !== 0) {
+ $ERROR('#6: new String("1") >> true === 0. Actual: ' + (new String("1") >> true));
+}
+
+//CHECK#7
+if (new Boolean(true) >> new String("1") !== 0) {
+ $ERROR('#7: new Boolean(true) >> new String("1") === 0. Actual: ' + (new Boolean(true) >> new String("1")));
+}
+
+//CHECK#8
+if (new String("1") >> new Boolean(true) !== 0) {
+ $ERROR('#8: new String("1") >> new Boolean(true) === 0. Actual: ' + (new String("1") >> new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.6.js
new file mode 100644
index 000000000..567d6b773
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T2.6;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ("1" >> undefined !== 1) {
+ $ERROR('#1: "1" >> undefined === 1. Actual: ' + ("1" >> undefined));
+}
+
+//CHECK#2
+if (undefined >> "1" !== 0) {
+ $ERROR('#2: undefined >> "1" === 0. Actual: ' + (undefined >> "1"));
+}
+
+//CHECK#3
+if (new String("1") >> undefined !== 1) {
+ $ERROR('#3: new String("1") >> undefined === 1. Actual: ' + (new String("1") >> undefined));
+}
+
+//CHECK#4
+if (undefined >> new String("1") !== 0) {
+ $ERROR('#4: undefined >> new String("1") === 0. Actual: ' + (undefined >> new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.7.js
new file mode 100644
index 000000000..5e254c66b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T2.7;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" >> null !== 1) {
+ $ERROR('#1: "1" >> null === 1. Actual: ' + ("1" >> null));
+}
+
+//CHECK#2
+if (null >> "1" !== 0) {
+ $ERROR('#2: null >> "1" === 0. Actual: ' + (null >> "1"));
+}
+
+//CHECK#3
+if (new String("1") >> null !== 1) {
+ $ERROR('#3: new String("1") >> null === 1. Actual: ' + (new String("1") >> null));
+}
+
+//CHECK#4
+if (null >> new String("1") !== 0) {
+ $ERROR('#4: null >> new String("1") === 0. Actual: ' + (null >> new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.8.js
new file mode 100644
index 000000000..7f37aa219
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T2.8;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (true >> undefined !== 1) {
+ $ERROR('#1: true >> undefined === 1. Actual: ' + (true >> undefined));
+}
+
+//CHECK#2
+if (undefined >> true !== 0) {
+ $ERROR('#2: undefined >> true === 0. Actual: ' + (undefined >> true));
+}
+
+//CHECK#3
+if (new Boolean(true) >> undefined !== 1) {
+ $ERROR('#3: new Boolean(true) >> undefined === 1. Actual: ' + (new Boolean(true) >> undefined));
+}
+
+//CHECK#4
+if (undefined >> new Boolean(true) !== 0) {
+ $ERROR('#4: undefined >> new Boolean(true) === 0. Actual: ' + (undefined >> new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.9.js
new file mode 100644
index 000000000..733306fba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A3_T2.9;
+ * @section: 11.7.2;
+ * @assertion: Operator x >> y returns ToNumber(x) >> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true >> null !== 1) {
+ $ERROR('#1: true >> null === 1. Actual: ' + (true >> null));
+}
+
+//CHECK#2
+if (null >> true !== 0) {
+ $ERROR('#2: null >> true === 0. Actual: ' + (null >> true));
+}
+
+//CHECK#3
+if (new Boolean(true) >> null !== 1) {
+ $ERROR('#3: new Boolean(true) >> null === 1. Actual: ' + (new Boolean(true) >> null));
+}
+
+//CHECK#4
+if (null >> new Boolean(true) !== 0) {
+ $ERROR('#4: null >> new Boolean(true) === 0. Actual: ' + (null >> new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T1.js
new file mode 100644
index 000000000..1369a8649
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T1.js
@@ -0,0 +1,2570 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A4_T1;
+ * @section: 11.7.2;
+ * @assertion: Check x >> y operator in distinct points;
+ * @description: ShiftExpression = -2^n, n = 0...15;
+ */
+
+//CHECK
+
+if (-1 >> 0 !== -1) {
+ $ERROR('#1: -1 >> 0 === -1. Actual: ' + (-1 >> 0));
+}
+
+
+if (-2 >> 0 !== -2) {
+ $ERROR('#2: -2 >> 0 === -2. Actual: ' + (-2 >> 0));
+}
+
+
+if (-4 >> 0 !== -4) {
+ $ERROR('#3: -4 >> 0 === -4. Actual: ' + (-4 >> 0));
+}
+
+
+if (-8 >> 0 !== -8) {
+ $ERROR('#4: -8 >> 0 === -8. Actual: ' + (-8 >> 0));
+}
+
+
+if (-16 >> 0 !== -16) {
+ $ERROR('#5: -16 >> 0 === -16. Actual: ' + (-16 >> 0));
+}
+
+
+if (-32 >> 0 !== -32) {
+ $ERROR('#6: -32 >> 0 === -32. Actual: ' + (-32 >> 0));
+}
+
+
+if (-64 >> 0 !== -64) {
+ $ERROR('#7: -64 >> 0 === -64. Actual: ' + (-64 >> 0));
+}
+
+
+if (-128 >> 0 !== -128) {
+ $ERROR('#8: -128 >> 0 === -128. Actual: ' + (-128 >> 0));
+}
+
+
+if (-256 >> 0 !== -256) {
+ $ERROR('#9: -256 >> 0 === -256. Actual: ' + (-256 >> 0));
+}
+
+
+if (-512 >> 0 !== -512) {
+ $ERROR('#10: -512 >> 0 === -512. Actual: ' + (-512 >> 0));
+}
+
+
+if (-1024 >> 0 !== -1024) {
+ $ERROR('#11: -1024 >> 0 === -1024. Actual: ' + (-1024 >> 0));
+}
+
+
+if (-2048 >> 0 !== -2048) {
+ $ERROR('#12: -2048 >> 0 === -2048. Actual: ' + (-2048 >> 0));
+}
+
+
+if (-4096 >> 0 !== -4096) {
+ $ERROR('#13: -4096 >> 0 === -4096. Actual: ' + (-4096 >> 0));
+}
+
+
+if (-8192 >> 0 !== -8192) {
+ $ERROR('#14: -8192 >> 0 === -8192. Actual: ' + (-8192 >> 0));
+}
+
+
+if (-16384 >> 0 !== -16384) {
+ $ERROR('#15: -16384 >> 0 === -16384. Actual: ' + (-16384 >> 0));
+}
+
+
+if (-32768 >> 0 !== -32768) {
+ $ERROR('#16: -32768 >> 0 === -32768. Actual: ' + (-32768 >> 0));
+}
+
+
+if (-65536 >> 0 !== -65536) {
+ $ERROR('#17: -65536 >> 0 === -65536. Actual: ' + (-65536 >> 0));
+}
+
+
+if (-131072 >> 0 !== -131072) {
+ $ERROR('#18: -131072 >> 0 === -131072. Actual: ' + (-131072 >> 0));
+}
+
+
+if (-262144 >> 0 !== -262144) {
+ $ERROR('#19: -262144 >> 0 === -262144. Actual: ' + (-262144 >> 0));
+}
+
+
+if (-524288 >> 0 !== -524288) {
+ $ERROR('#20: -524288 >> 0 === -524288. Actual: ' + (-524288 >> 0));
+}
+
+
+if (-1048576 >> 0 !== -1048576) {
+ $ERROR('#21: -1048576 >> 0 === -1048576. Actual: ' + (-1048576 >> 0));
+}
+
+
+if (-2097152 >> 0 !== -2097152) {
+ $ERROR('#22: -2097152 >> 0 === -2097152. Actual: ' + (-2097152 >> 0));
+}
+
+
+if (-4194304 >> 0 !== -4194304) {
+ $ERROR('#23: -4194304 >> 0 === -4194304. Actual: ' + (-4194304 >> 0));
+}
+
+
+if (-8388608 >> 0 !== -8388608) {
+ $ERROR('#24: -8388608 >> 0 === -8388608. Actual: ' + (-8388608 >> 0));
+}
+
+
+if (-16777216 >> 0 !== -16777216) {
+ $ERROR('#25: -16777216 >> 0 === -16777216. Actual: ' + (-16777216 >> 0));
+}
+
+
+if (-33554432 >> 0 !== -33554432) {
+ $ERROR('#26: -33554432 >> 0 === -33554432. Actual: ' + (-33554432 >> 0));
+}
+
+
+if (-67108864 >> 0 !== -67108864) {
+ $ERROR('#27: -67108864 >> 0 === -67108864. Actual: ' + (-67108864 >> 0));
+}
+
+
+if (-134217728 >> 0 !== -134217728) {
+ $ERROR('#28: -134217728 >> 0 === -134217728. Actual: ' + (-134217728 >> 0));
+}
+
+
+if (-268435456 >> 0 !== -268435456) {
+ $ERROR('#29: -268435456 >> 0 === -268435456. Actual: ' + (-268435456 >> 0));
+}
+
+
+if (-536870912 >> 0 !== -536870912) {
+ $ERROR('#30: -536870912 >> 0 === -536870912. Actual: ' + (-536870912 >> 0));
+}
+
+
+if (-1073741824 >> 0 !== -1073741824) {
+ $ERROR('#31: -1073741824 >> 0 === -1073741824. Actual: ' + (-1073741824 >> 0));
+}
+
+
+if (-2147483648 >> 0 !== -2147483648) {
+ $ERROR('#32: -2147483648 >> 0 === -2147483648. Actual: ' + (-2147483648 >> 0));
+}
+
+
+if (-1 >> 1 !== -1) {
+ $ERROR('#33: -1 >> 1 === -1. Actual: ' + (-1 >> 1));
+}
+
+
+if (-2 >> 1 !== -1) {
+ $ERROR('#34: -2 >> 1 === -1. Actual: ' + (-2 >> 1));
+}
+
+
+if (-4 >> 1 !== -2) {
+ $ERROR('#35: -4 >> 1 === -2. Actual: ' + (-4 >> 1));
+}
+
+
+if (-8 >> 1 !== -4) {
+ $ERROR('#36: -8 >> 1 === -4. Actual: ' + (-8 >> 1));
+}
+
+
+if (-16 >> 1 !== -8) {
+ $ERROR('#37: -16 >> 1 === -8. Actual: ' + (-16 >> 1));
+}
+
+
+if (-32 >> 1 !== -16) {
+ $ERROR('#38: -32 >> 1 === -16. Actual: ' + (-32 >> 1));
+}
+
+
+if (-64 >> 1 !== -32) {
+ $ERROR('#39: -64 >> 1 === -32. Actual: ' + (-64 >> 1));
+}
+
+
+if (-128 >> 1 !== -64) {
+ $ERROR('#40: -128 >> 1 === -64. Actual: ' + (-128 >> 1));
+}
+
+
+if (-256 >> 1 !== -128) {
+ $ERROR('#41: -256 >> 1 === -128. Actual: ' + (-256 >> 1));
+}
+
+
+if (-512 >> 1 !== -256) {
+ $ERROR('#42: -512 >> 1 === -256. Actual: ' + (-512 >> 1));
+}
+
+
+if (-1024 >> 1 !== -512) {
+ $ERROR('#43: -1024 >> 1 === -512. Actual: ' + (-1024 >> 1));
+}
+
+
+if (-2048 >> 1 !== -1024) {
+ $ERROR('#44: -2048 >> 1 === -1024. Actual: ' + (-2048 >> 1));
+}
+
+
+if (-4096 >> 1 !== -2048) {
+ $ERROR('#45: -4096 >> 1 === -2048. Actual: ' + (-4096 >> 1));
+}
+
+
+if (-8192 >> 1 !== -4096) {
+ $ERROR('#46: -8192 >> 1 === -4096. Actual: ' + (-8192 >> 1));
+}
+
+
+if (-16384 >> 1 !== -8192) {
+ $ERROR('#47: -16384 >> 1 === -8192. Actual: ' + (-16384 >> 1));
+}
+
+
+if (-32768 >> 1 !== -16384) {
+ $ERROR('#48: -32768 >> 1 === -16384. Actual: ' + (-32768 >> 1));
+}
+
+
+if (-65536 >> 1 !== -32768) {
+ $ERROR('#49: -65536 >> 1 === -32768. Actual: ' + (-65536 >> 1));
+}
+
+
+if (-131072 >> 1 !== -65536) {
+ $ERROR('#50: -131072 >> 1 === -65536. Actual: ' + (-131072 >> 1));
+}
+
+
+if (-262144 >> 1 !== -131072) {
+ $ERROR('#51: -262144 >> 1 === -131072. Actual: ' + (-262144 >> 1));
+}
+
+
+if (-524288 >> 1 !== -262144) {
+ $ERROR('#52: -524288 >> 1 === -262144. Actual: ' + (-524288 >> 1));
+}
+
+
+if (-1048576 >> 1 !== -524288) {
+ $ERROR('#53: -1048576 >> 1 === -524288. Actual: ' + (-1048576 >> 1));
+}
+
+
+if (-2097152 >> 1 !== -1048576) {
+ $ERROR('#54: -2097152 >> 1 === -1048576. Actual: ' + (-2097152 >> 1));
+}
+
+
+if (-4194304 >> 1 !== -2097152) {
+ $ERROR('#55: -4194304 >> 1 === -2097152. Actual: ' + (-4194304 >> 1));
+}
+
+
+if (-8388608 >> 1 !== -4194304) {
+ $ERROR('#56: -8388608 >> 1 === -4194304. Actual: ' + (-8388608 >> 1));
+}
+
+
+if (-16777216 >> 1 !== -8388608) {
+ $ERROR('#57: -16777216 >> 1 === -8388608. Actual: ' + (-16777216 >> 1));
+}
+
+
+if (-33554432 >> 1 !== -16777216) {
+ $ERROR('#58: -33554432 >> 1 === -16777216. Actual: ' + (-33554432 >> 1));
+}
+
+
+if (-67108864 >> 1 !== -33554432) {
+ $ERROR('#59: -67108864 >> 1 === -33554432. Actual: ' + (-67108864 >> 1));
+}
+
+
+if (-134217728 >> 1 !== -67108864) {
+ $ERROR('#60: -134217728 >> 1 === -67108864. Actual: ' + (-134217728 >> 1));
+}
+
+
+if (-268435456 >> 1 !== -134217728) {
+ $ERROR('#61: -268435456 >> 1 === -134217728. Actual: ' + (-268435456 >> 1));
+}
+
+
+if (-536870912 >> 1 !== -268435456) {
+ $ERROR('#62: -536870912 >> 1 === -268435456. Actual: ' + (-536870912 >> 1));
+}
+
+
+if (-1073741824 >> 1 !== -536870912) {
+ $ERROR('#63: -1073741824 >> 1 === -536870912. Actual: ' + (-1073741824 >> 1));
+}
+
+
+if (-2147483648 >> 1 !== -1073741824) {
+ $ERROR('#64: -2147483648 >> 1 === -1073741824. Actual: ' + (-2147483648 >> 1));
+}
+
+
+if (-1 >> 2 !== -1) {
+ $ERROR('#65: -1 >> 2 === -1. Actual: ' + (-1 >> 2));
+}
+
+
+if (-2 >> 2 !== -1) {
+ $ERROR('#66: -2 >> 2 === -1. Actual: ' + (-2 >> 2));
+}
+
+
+if (-4 >> 2 !== -1) {
+ $ERROR('#67: -4 >> 2 === -1. Actual: ' + (-4 >> 2));
+}
+
+
+if (-8 >> 2 !== -2) {
+ $ERROR('#68: -8 >> 2 === -2. Actual: ' + (-8 >> 2));
+}
+
+
+if (-16 >> 2 !== -4) {
+ $ERROR('#69: -16 >> 2 === -4. Actual: ' + (-16 >> 2));
+}
+
+
+if (-32 >> 2 !== -8) {
+ $ERROR('#70: -32 >> 2 === -8. Actual: ' + (-32 >> 2));
+}
+
+
+if (-64 >> 2 !== -16) {
+ $ERROR('#71: -64 >> 2 === -16. Actual: ' + (-64 >> 2));
+}
+
+
+if (-128 >> 2 !== -32) {
+ $ERROR('#72: -128 >> 2 === -32. Actual: ' + (-128 >> 2));
+}
+
+
+if (-256 >> 2 !== -64) {
+ $ERROR('#73: -256 >> 2 === -64. Actual: ' + (-256 >> 2));
+}
+
+
+if (-512 >> 2 !== -128) {
+ $ERROR('#74: -512 >> 2 === -128. Actual: ' + (-512 >> 2));
+}
+
+
+if (-1024 >> 2 !== -256) {
+ $ERROR('#75: -1024 >> 2 === -256. Actual: ' + (-1024 >> 2));
+}
+
+
+if (-2048 >> 2 !== -512) {
+ $ERROR('#76: -2048 >> 2 === -512. Actual: ' + (-2048 >> 2));
+}
+
+
+if (-4096 >> 2 !== -1024) {
+ $ERROR('#77: -4096 >> 2 === -1024. Actual: ' + (-4096 >> 2));
+}
+
+
+if (-8192 >> 2 !== -2048) {
+ $ERROR('#78: -8192 >> 2 === -2048. Actual: ' + (-8192 >> 2));
+}
+
+
+if (-16384 >> 2 !== -4096) {
+ $ERROR('#79: -16384 >> 2 === -4096. Actual: ' + (-16384 >> 2));
+}
+
+
+if (-32768 >> 2 !== -8192) {
+ $ERROR('#80: -32768 >> 2 === -8192. Actual: ' + (-32768 >> 2));
+}
+
+
+if (-65536 >> 2 !== -16384) {
+ $ERROR('#81: -65536 >> 2 === -16384. Actual: ' + (-65536 >> 2));
+}
+
+
+if (-131072 >> 2 !== -32768) {
+ $ERROR('#82: -131072 >> 2 === -32768. Actual: ' + (-131072 >> 2));
+}
+
+
+if (-262144 >> 2 !== -65536) {
+ $ERROR('#83: -262144 >> 2 === -65536. Actual: ' + (-262144 >> 2));
+}
+
+
+if (-524288 >> 2 !== -131072) {
+ $ERROR('#84: -524288 >> 2 === -131072. Actual: ' + (-524288 >> 2));
+}
+
+
+if (-1048576 >> 2 !== -262144) {
+ $ERROR('#85: -1048576 >> 2 === -262144. Actual: ' + (-1048576 >> 2));
+}
+
+
+if (-2097152 >> 2 !== -524288) {
+ $ERROR('#86: -2097152 >> 2 === -524288. Actual: ' + (-2097152 >> 2));
+}
+
+
+if (-4194304 >> 2 !== -1048576) {
+ $ERROR('#87: -4194304 >> 2 === -1048576. Actual: ' + (-4194304 >> 2));
+}
+
+
+if (-8388608 >> 2 !== -2097152) {
+ $ERROR('#88: -8388608 >> 2 === -2097152. Actual: ' + (-8388608 >> 2));
+}
+
+
+if (-16777216 >> 2 !== -4194304) {
+ $ERROR('#89: -16777216 >> 2 === -4194304. Actual: ' + (-16777216 >> 2));
+}
+
+
+if (-33554432 >> 2 !== -8388608) {
+ $ERROR('#90: -33554432 >> 2 === -8388608. Actual: ' + (-33554432 >> 2));
+}
+
+
+if (-67108864 >> 2 !== -16777216) {
+ $ERROR('#91: -67108864 >> 2 === -16777216. Actual: ' + (-67108864 >> 2));
+}
+
+
+if (-134217728 >> 2 !== -33554432) {
+ $ERROR('#92: -134217728 >> 2 === -33554432. Actual: ' + (-134217728 >> 2));
+}
+
+
+if (-268435456 >> 2 !== -67108864) {
+ $ERROR('#93: -268435456 >> 2 === -67108864. Actual: ' + (-268435456 >> 2));
+}
+
+
+if (-536870912 >> 2 !== -134217728) {
+ $ERROR('#94: -536870912 >> 2 === -134217728. Actual: ' + (-536870912 >> 2));
+}
+
+
+if (-1073741824 >> 2 !== -268435456) {
+ $ERROR('#95: -1073741824 >> 2 === -268435456. Actual: ' + (-1073741824 >> 2));
+}
+
+
+if (-2147483648 >> 2 !== -536870912) {
+ $ERROR('#96: -2147483648 >> 2 === -536870912. Actual: ' + (-2147483648 >> 2));
+}
+
+
+if (-1 >> 3 !== -1) {
+ $ERROR('#97: -1 >> 3 === -1. Actual: ' + (-1 >> 3));
+}
+
+
+if (-2 >> 3 !== -1) {
+ $ERROR('#98: -2 >> 3 === -1. Actual: ' + (-2 >> 3));
+}
+
+
+if (-4 >> 3 !== -1) {
+ $ERROR('#99: -4 >> 3 === -1. Actual: ' + (-4 >> 3));
+}
+
+
+if (-8 >> 3 !== -1) {
+ $ERROR('#100: -8 >> 3 === -1. Actual: ' + (-8 >> 3));
+}
+
+
+if (-16 >> 3 !== -2) {
+ $ERROR('#101: -16 >> 3 === -2. Actual: ' + (-16 >> 3));
+}
+
+
+if (-32 >> 3 !== -4) {
+ $ERROR('#102: -32 >> 3 === -4. Actual: ' + (-32 >> 3));
+}
+
+
+if (-64 >> 3 !== -8) {
+ $ERROR('#103: -64 >> 3 === -8. Actual: ' + (-64 >> 3));
+}
+
+
+if (-128 >> 3 !== -16) {
+ $ERROR('#104: -128 >> 3 === -16. Actual: ' + (-128 >> 3));
+}
+
+
+if (-256 >> 3 !== -32) {
+ $ERROR('#105: -256 >> 3 === -32. Actual: ' + (-256 >> 3));
+}
+
+
+if (-512 >> 3 !== -64) {
+ $ERROR('#106: -512 >> 3 === -64. Actual: ' + (-512 >> 3));
+}
+
+
+if (-1024 >> 3 !== -128) {
+ $ERROR('#107: -1024 >> 3 === -128. Actual: ' + (-1024 >> 3));
+}
+
+
+if (-2048 >> 3 !== -256) {
+ $ERROR('#108: -2048 >> 3 === -256. Actual: ' + (-2048 >> 3));
+}
+
+
+if (-4096 >> 3 !== -512) {
+ $ERROR('#109: -4096 >> 3 === -512. Actual: ' + (-4096 >> 3));
+}
+
+
+if (-8192 >> 3 !== -1024) {
+ $ERROR('#110: -8192 >> 3 === -1024. Actual: ' + (-8192 >> 3));
+}
+
+
+if (-16384 >> 3 !== -2048) {
+ $ERROR('#111: -16384 >> 3 === -2048. Actual: ' + (-16384 >> 3));
+}
+
+
+if (-32768 >> 3 !== -4096) {
+ $ERROR('#112: -32768 >> 3 === -4096. Actual: ' + (-32768 >> 3));
+}
+
+
+if (-65536 >> 3 !== -8192) {
+ $ERROR('#113: -65536 >> 3 === -8192. Actual: ' + (-65536 >> 3));
+}
+
+
+if (-131072 >> 3 !== -16384) {
+ $ERROR('#114: -131072 >> 3 === -16384. Actual: ' + (-131072 >> 3));
+}
+
+
+if (-262144 >> 3 !== -32768) {
+ $ERROR('#115: -262144 >> 3 === -32768. Actual: ' + (-262144 >> 3));
+}
+
+
+if (-524288 >> 3 !== -65536) {
+ $ERROR('#116: -524288 >> 3 === -65536. Actual: ' + (-524288 >> 3));
+}
+
+
+if (-1048576 >> 3 !== -131072) {
+ $ERROR('#117: -1048576 >> 3 === -131072. Actual: ' + (-1048576 >> 3));
+}
+
+
+if (-2097152 >> 3 !== -262144) {
+ $ERROR('#118: -2097152 >> 3 === -262144. Actual: ' + (-2097152 >> 3));
+}
+
+
+if (-4194304 >> 3 !== -524288) {
+ $ERROR('#119: -4194304 >> 3 === -524288. Actual: ' + (-4194304 >> 3));
+}
+
+
+if (-8388608 >> 3 !== -1048576) {
+ $ERROR('#120: -8388608 >> 3 === -1048576. Actual: ' + (-8388608 >> 3));
+}
+
+
+if (-16777216 >> 3 !== -2097152) {
+ $ERROR('#121: -16777216 >> 3 === -2097152. Actual: ' + (-16777216 >> 3));
+}
+
+
+if (-33554432 >> 3 !== -4194304) {
+ $ERROR('#122: -33554432 >> 3 === -4194304. Actual: ' + (-33554432 >> 3));
+}
+
+
+if (-67108864 >> 3 !== -8388608) {
+ $ERROR('#123: -67108864 >> 3 === -8388608. Actual: ' + (-67108864 >> 3));
+}
+
+
+if (-134217728 >> 3 !== -16777216) {
+ $ERROR('#124: -134217728 >> 3 === -16777216. Actual: ' + (-134217728 >> 3));
+}
+
+
+if (-268435456 >> 3 !== -33554432) {
+ $ERROR('#125: -268435456 >> 3 === -33554432. Actual: ' + (-268435456 >> 3));
+}
+
+
+if (-536870912 >> 3 !== -67108864) {
+ $ERROR('#126: -536870912 >> 3 === -67108864. Actual: ' + (-536870912 >> 3));
+}
+
+
+if (-1073741824 >> 3 !== -134217728) {
+ $ERROR('#127: -1073741824 >> 3 === -134217728. Actual: ' + (-1073741824 >> 3));
+}
+
+
+if (-2147483648 >> 3 !== -268435456) {
+ $ERROR('#128: -2147483648 >> 3 === -268435456. Actual: ' + (-2147483648 >> 3));
+}
+
+
+if (-1 >> 4 !== -1) {
+ $ERROR('#129: -1 >> 4 === -1. Actual: ' + (-1 >> 4));
+}
+
+
+if (-2 >> 4 !== -1) {
+ $ERROR('#130: -2 >> 4 === -1. Actual: ' + (-2 >> 4));
+}
+
+
+if (-4 >> 4 !== -1) {
+ $ERROR('#131: -4 >> 4 === -1. Actual: ' + (-4 >> 4));
+}
+
+
+if (-8 >> 4 !== -1) {
+ $ERROR('#132: -8 >> 4 === -1. Actual: ' + (-8 >> 4));
+}
+
+
+if (-16 >> 4 !== -1) {
+ $ERROR('#133: -16 >> 4 === -1. Actual: ' + (-16 >> 4));
+}
+
+
+if (-32 >> 4 !== -2) {
+ $ERROR('#134: -32 >> 4 === -2. Actual: ' + (-32 >> 4));
+}
+
+
+if (-64 >> 4 !== -4) {
+ $ERROR('#135: -64 >> 4 === -4. Actual: ' + (-64 >> 4));
+}
+
+
+if (-128 >> 4 !== -8) {
+ $ERROR('#136: -128 >> 4 === -8. Actual: ' + (-128 >> 4));
+}
+
+
+if (-256 >> 4 !== -16) {
+ $ERROR('#137: -256 >> 4 === -16. Actual: ' + (-256 >> 4));
+}
+
+
+if (-512 >> 4 !== -32) {
+ $ERROR('#138: -512 >> 4 === -32. Actual: ' + (-512 >> 4));
+}
+
+
+if (-1024 >> 4 !== -64) {
+ $ERROR('#139: -1024 >> 4 === -64. Actual: ' + (-1024 >> 4));
+}
+
+
+if (-2048 >> 4 !== -128) {
+ $ERROR('#140: -2048 >> 4 === -128. Actual: ' + (-2048 >> 4));
+}
+
+
+if (-4096 >> 4 !== -256) {
+ $ERROR('#141: -4096 >> 4 === -256. Actual: ' + (-4096 >> 4));
+}
+
+
+if (-8192 >> 4 !== -512) {
+ $ERROR('#142: -8192 >> 4 === -512. Actual: ' + (-8192 >> 4));
+}
+
+
+if (-16384 >> 4 !== -1024) {
+ $ERROR('#143: -16384 >> 4 === -1024. Actual: ' + (-16384 >> 4));
+}
+
+
+if (-32768 >> 4 !== -2048) {
+ $ERROR('#144: -32768 >> 4 === -2048. Actual: ' + (-32768 >> 4));
+}
+
+
+if (-65536 >> 4 !== -4096) {
+ $ERROR('#145: -65536 >> 4 === -4096. Actual: ' + (-65536 >> 4));
+}
+
+
+if (-131072 >> 4 !== -8192) {
+ $ERROR('#146: -131072 >> 4 === -8192. Actual: ' + (-131072 >> 4));
+}
+
+
+if (-262144 >> 4 !== -16384) {
+ $ERROR('#147: -262144 >> 4 === -16384. Actual: ' + (-262144 >> 4));
+}
+
+
+if (-524288 >> 4 !== -32768) {
+ $ERROR('#148: -524288 >> 4 === -32768. Actual: ' + (-524288 >> 4));
+}
+
+
+if (-1048576 >> 4 !== -65536) {
+ $ERROR('#149: -1048576 >> 4 === -65536. Actual: ' + (-1048576 >> 4));
+}
+
+
+if (-2097152 >> 4 !== -131072) {
+ $ERROR('#150: -2097152 >> 4 === -131072. Actual: ' + (-2097152 >> 4));
+}
+
+
+if (-4194304 >> 4 !== -262144) {
+ $ERROR('#151: -4194304 >> 4 === -262144. Actual: ' + (-4194304 >> 4));
+}
+
+
+if (-8388608 >> 4 !== -524288) {
+ $ERROR('#152: -8388608 >> 4 === -524288. Actual: ' + (-8388608 >> 4));
+}
+
+
+if (-16777216 >> 4 !== -1048576) {
+ $ERROR('#153: -16777216 >> 4 === -1048576. Actual: ' + (-16777216 >> 4));
+}
+
+
+if (-33554432 >> 4 !== -2097152) {
+ $ERROR('#154: -33554432 >> 4 === -2097152. Actual: ' + (-33554432 >> 4));
+}
+
+
+if (-67108864 >> 4 !== -4194304) {
+ $ERROR('#155: -67108864 >> 4 === -4194304. Actual: ' + (-67108864 >> 4));
+}
+
+
+if (-134217728 >> 4 !== -8388608) {
+ $ERROR('#156: -134217728 >> 4 === -8388608. Actual: ' + (-134217728 >> 4));
+}
+
+
+if (-268435456 >> 4 !== -16777216) {
+ $ERROR('#157: -268435456 >> 4 === -16777216. Actual: ' + (-268435456 >> 4));
+}
+
+
+if (-536870912 >> 4 !== -33554432) {
+ $ERROR('#158: -536870912 >> 4 === -33554432. Actual: ' + (-536870912 >> 4));
+}
+
+
+if (-1073741824 >> 4 !== -67108864) {
+ $ERROR('#159: -1073741824 >> 4 === -67108864. Actual: ' + (-1073741824 >> 4));
+}
+
+
+if (-2147483648 >> 4 !== -134217728) {
+ $ERROR('#160: -2147483648 >> 4 === -134217728. Actual: ' + (-2147483648 >> 4));
+}
+
+
+if (-1 >> 5 !== -1) {
+ $ERROR('#161: -1 >> 5 === -1. Actual: ' + (-1 >> 5));
+}
+
+
+if (-2 >> 5 !== -1) {
+ $ERROR('#162: -2 >> 5 === -1. Actual: ' + (-2 >> 5));
+}
+
+
+if (-4 >> 5 !== -1) {
+ $ERROR('#163: -4 >> 5 === -1. Actual: ' + (-4 >> 5));
+}
+
+
+if (-8 >> 5 !== -1) {
+ $ERROR('#164: -8 >> 5 === -1. Actual: ' + (-8 >> 5));
+}
+
+
+if (-16 >> 5 !== -1) {
+ $ERROR('#165: -16 >> 5 === -1. Actual: ' + (-16 >> 5));
+}
+
+
+if (-32 >> 5 !== -1) {
+ $ERROR('#166: -32 >> 5 === -1. Actual: ' + (-32 >> 5));
+}
+
+
+if (-64 >> 5 !== -2) {
+ $ERROR('#167: -64 >> 5 === -2. Actual: ' + (-64 >> 5));
+}
+
+
+if (-128 >> 5 !== -4) {
+ $ERROR('#168: -128 >> 5 === -4. Actual: ' + (-128 >> 5));
+}
+
+
+if (-256 >> 5 !== -8) {
+ $ERROR('#169: -256 >> 5 === -8. Actual: ' + (-256 >> 5));
+}
+
+
+if (-512 >> 5 !== -16) {
+ $ERROR('#170: -512 >> 5 === -16. Actual: ' + (-512 >> 5));
+}
+
+
+if (-1024 >> 5 !== -32) {
+ $ERROR('#171: -1024 >> 5 === -32. Actual: ' + (-1024 >> 5));
+}
+
+
+if (-2048 >> 5 !== -64) {
+ $ERROR('#172: -2048 >> 5 === -64. Actual: ' + (-2048 >> 5));
+}
+
+
+if (-4096 >> 5 !== -128) {
+ $ERROR('#173: -4096 >> 5 === -128. Actual: ' + (-4096 >> 5));
+}
+
+
+if (-8192 >> 5 !== -256) {
+ $ERROR('#174: -8192 >> 5 === -256. Actual: ' + (-8192 >> 5));
+}
+
+
+if (-16384 >> 5 !== -512) {
+ $ERROR('#175: -16384 >> 5 === -512. Actual: ' + (-16384 >> 5));
+}
+
+
+if (-32768 >> 5 !== -1024) {
+ $ERROR('#176: -32768 >> 5 === -1024. Actual: ' + (-32768 >> 5));
+}
+
+
+if (-65536 >> 5 !== -2048) {
+ $ERROR('#177: -65536 >> 5 === -2048. Actual: ' + (-65536 >> 5));
+}
+
+
+if (-131072 >> 5 !== -4096) {
+ $ERROR('#178: -131072 >> 5 === -4096. Actual: ' + (-131072 >> 5));
+}
+
+
+if (-262144 >> 5 !== -8192) {
+ $ERROR('#179: -262144 >> 5 === -8192. Actual: ' + (-262144 >> 5));
+}
+
+
+if (-524288 >> 5 !== -16384) {
+ $ERROR('#180: -524288 >> 5 === -16384. Actual: ' + (-524288 >> 5));
+}
+
+
+if (-1048576 >> 5 !== -32768) {
+ $ERROR('#181: -1048576 >> 5 === -32768. Actual: ' + (-1048576 >> 5));
+}
+
+
+if (-2097152 >> 5 !== -65536) {
+ $ERROR('#182: -2097152 >> 5 === -65536. Actual: ' + (-2097152 >> 5));
+}
+
+
+if (-4194304 >> 5 !== -131072) {
+ $ERROR('#183: -4194304 >> 5 === -131072. Actual: ' + (-4194304 >> 5));
+}
+
+
+if (-8388608 >> 5 !== -262144) {
+ $ERROR('#184: -8388608 >> 5 === -262144. Actual: ' + (-8388608 >> 5));
+}
+
+
+if (-16777216 >> 5 !== -524288) {
+ $ERROR('#185: -16777216 >> 5 === -524288. Actual: ' + (-16777216 >> 5));
+}
+
+
+if (-33554432 >> 5 !== -1048576) {
+ $ERROR('#186: -33554432 >> 5 === -1048576. Actual: ' + (-33554432 >> 5));
+}
+
+
+if (-67108864 >> 5 !== -2097152) {
+ $ERROR('#187: -67108864 >> 5 === -2097152. Actual: ' + (-67108864 >> 5));
+}
+
+
+if (-134217728 >> 5 !== -4194304) {
+ $ERROR('#188: -134217728 >> 5 === -4194304. Actual: ' + (-134217728 >> 5));
+}
+
+
+if (-268435456 >> 5 !== -8388608) {
+ $ERROR('#189: -268435456 >> 5 === -8388608. Actual: ' + (-268435456 >> 5));
+}
+
+
+if (-536870912 >> 5 !== -16777216) {
+ $ERROR('#190: -536870912 >> 5 === -16777216. Actual: ' + (-536870912 >> 5));
+}
+
+
+if (-1073741824 >> 5 !== -33554432) {
+ $ERROR('#191: -1073741824 >> 5 === -33554432. Actual: ' + (-1073741824 >> 5));
+}
+
+
+if (-2147483648 >> 5 !== -67108864) {
+ $ERROR('#192: -2147483648 >> 5 === -67108864. Actual: ' + (-2147483648 >> 5));
+}
+
+
+if (-1 >> 6 !== -1) {
+ $ERROR('#193: -1 >> 6 === -1. Actual: ' + (-1 >> 6));
+}
+
+
+if (-2 >> 6 !== -1) {
+ $ERROR('#194: -2 >> 6 === -1. Actual: ' + (-2 >> 6));
+}
+
+
+if (-4 >> 6 !== -1) {
+ $ERROR('#195: -4 >> 6 === -1. Actual: ' + (-4 >> 6));
+}
+
+
+if (-8 >> 6 !== -1) {
+ $ERROR('#196: -8 >> 6 === -1. Actual: ' + (-8 >> 6));
+}
+
+
+if (-16 >> 6 !== -1) {
+ $ERROR('#197: -16 >> 6 === -1. Actual: ' + (-16 >> 6));
+}
+
+
+if (-32 >> 6 !== -1) {
+ $ERROR('#198: -32 >> 6 === -1. Actual: ' + (-32 >> 6));
+}
+
+
+if (-64 >> 6 !== -1) {
+ $ERROR('#199: -64 >> 6 === -1. Actual: ' + (-64 >> 6));
+}
+
+
+if (-128 >> 6 !== -2) {
+ $ERROR('#200: -128 >> 6 === -2. Actual: ' + (-128 >> 6));
+}
+
+
+if (-256 >> 6 !== -4) {
+ $ERROR('#201: -256 >> 6 === -4. Actual: ' + (-256 >> 6));
+}
+
+
+if (-512 >> 6 !== -8) {
+ $ERROR('#202: -512 >> 6 === -8. Actual: ' + (-512 >> 6));
+}
+
+
+if (-1024 >> 6 !== -16) {
+ $ERROR('#203: -1024 >> 6 === -16. Actual: ' + (-1024 >> 6));
+}
+
+
+if (-2048 >> 6 !== -32) {
+ $ERROR('#204: -2048 >> 6 === -32. Actual: ' + (-2048 >> 6));
+}
+
+
+if (-4096 >> 6 !== -64) {
+ $ERROR('#205: -4096 >> 6 === -64. Actual: ' + (-4096 >> 6));
+}
+
+
+if (-8192 >> 6 !== -128) {
+ $ERROR('#206: -8192 >> 6 === -128. Actual: ' + (-8192 >> 6));
+}
+
+
+if (-16384 >> 6 !== -256) {
+ $ERROR('#207: -16384 >> 6 === -256. Actual: ' + (-16384 >> 6));
+}
+
+
+if (-32768 >> 6 !== -512) {
+ $ERROR('#208: -32768 >> 6 === -512. Actual: ' + (-32768 >> 6));
+}
+
+
+if (-65536 >> 6 !== -1024) {
+ $ERROR('#209: -65536 >> 6 === -1024. Actual: ' + (-65536 >> 6));
+}
+
+
+if (-131072 >> 6 !== -2048) {
+ $ERROR('#210: -131072 >> 6 === -2048. Actual: ' + (-131072 >> 6));
+}
+
+
+if (-262144 >> 6 !== -4096) {
+ $ERROR('#211: -262144 >> 6 === -4096. Actual: ' + (-262144 >> 6));
+}
+
+
+if (-524288 >> 6 !== -8192) {
+ $ERROR('#212: -524288 >> 6 === -8192. Actual: ' + (-524288 >> 6));
+}
+
+
+if (-1048576 >> 6 !== -16384) {
+ $ERROR('#213: -1048576 >> 6 === -16384. Actual: ' + (-1048576 >> 6));
+}
+
+
+if (-2097152 >> 6 !== -32768) {
+ $ERROR('#214: -2097152 >> 6 === -32768. Actual: ' + (-2097152 >> 6));
+}
+
+
+if (-4194304 >> 6 !== -65536) {
+ $ERROR('#215: -4194304 >> 6 === -65536. Actual: ' + (-4194304 >> 6));
+}
+
+
+if (-8388608 >> 6 !== -131072) {
+ $ERROR('#216: -8388608 >> 6 === -131072. Actual: ' + (-8388608 >> 6));
+}
+
+
+if (-16777216 >> 6 !== -262144) {
+ $ERROR('#217: -16777216 >> 6 === -262144. Actual: ' + (-16777216 >> 6));
+}
+
+
+if (-33554432 >> 6 !== -524288) {
+ $ERROR('#218: -33554432 >> 6 === -524288. Actual: ' + (-33554432 >> 6));
+}
+
+
+if (-67108864 >> 6 !== -1048576) {
+ $ERROR('#219: -67108864 >> 6 === -1048576. Actual: ' + (-67108864 >> 6));
+}
+
+
+if (-134217728 >> 6 !== -2097152) {
+ $ERROR('#220: -134217728 >> 6 === -2097152. Actual: ' + (-134217728 >> 6));
+}
+
+
+if (-268435456 >> 6 !== -4194304) {
+ $ERROR('#221: -268435456 >> 6 === -4194304. Actual: ' + (-268435456 >> 6));
+}
+
+
+if (-536870912 >> 6 !== -8388608) {
+ $ERROR('#222: -536870912 >> 6 === -8388608. Actual: ' + (-536870912 >> 6));
+}
+
+
+if (-1073741824 >> 6 !== -16777216) {
+ $ERROR('#223: -1073741824 >> 6 === -16777216. Actual: ' + (-1073741824 >> 6));
+}
+
+
+if (-2147483648 >> 6 !== -33554432) {
+ $ERROR('#224: -2147483648 >> 6 === -33554432. Actual: ' + (-2147483648 >> 6));
+}
+
+
+if (-1 >> 7 !== -1) {
+ $ERROR('#225: -1 >> 7 === -1. Actual: ' + (-1 >> 7));
+}
+
+
+if (-2 >> 7 !== -1) {
+ $ERROR('#226: -2 >> 7 === -1. Actual: ' + (-2 >> 7));
+}
+
+
+if (-4 >> 7 !== -1) {
+ $ERROR('#227: -4 >> 7 === -1. Actual: ' + (-4 >> 7));
+}
+
+
+if (-8 >> 7 !== -1) {
+ $ERROR('#228: -8 >> 7 === -1. Actual: ' + (-8 >> 7));
+}
+
+
+if (-16 >> 7 !== -1) {
+ $ERROR('#229: -16 >> 7 === -1. Actual: ' + (-16 >> 7));
+}
+
+
+if (-32 >> 7 !== -1) {
+ $ERROR('#230: -32 >> 7 === -1. Actual: ' + (-32 >> 7));
+}
+
+
+if (-64 >> 7 !== -1) {
+ $ERROR('#231: -64 >> 7 === -1. Actual: ' + (-64 >> 7));
+}
+
+
+if (-128 >> 7 !== -1) {
+ $ERROR('#232: -128 >> 7 === -1. Actual: ' + (-128 >> 7));
+}
+
+
+if (-256 >> 7 !== -2) {
+ $ERROR('#233: -256 >> 7 === -2. Actual: ' + (-256 >> 7));
+}
+
+
+if (-512 >> 7 !== -4) {
+ $ERROR('#234: -512 >> 7 === -4. Actual: ' + (-512 >> 7));
+}
+
+
+if (-1024 >> 7 !== -8) {
+ $ERROR('#235: -1024 >> 7 === -8. Actual: ' + (-1024 >> 7));
+}
+
+
+if (-2048 >> 7 !== -16) {
+ $ERROR('#236: -2048 >> 7 === -16. Actual: ' + (-2048 >> 7));
+}
+
+
+if (-4096 >> 7 !== -32) {
+ $ERROR('#237: -4096 >> 7 === -32. Actual: ' + (-4096 >> 7));
+}
+
+
+if (-8192 >> 7 !== -64) {
+ $ERROR('#238: -8192 >> 7 === -64. Actual: ' + (-8192 >> 7));
+}
+
+
+if (-16384 >> 7 !== -128) {
+ $ERROR('#239: -16384 >> 7 === -128. Actual: ' + (-16384 >> 7));
+}
+
+
+if (-32768 >> 7 !== -256) {
+ $ERROR('#240: -32768 >> 7 === -256. Actual: ' + (-32768 >> 7));
+}
+
+
+if (-65536 >> 7 !== -512) {
+ $ERROR('#241: -65536 >> 7 === -512. Actual: ' + (-65536 >> 7));
+}
+
+
+if (-131072 >> 7 !== -1024) {
+ $ERROR('#242: -131072 >> 7 === -1024. Actual: ' + (-131072 >> 7));
+}
+
+
+if (-262144 >> 7 !== -2048) {
+ $ERROR('#243: -262144 >> 7 === -2048. Actual: ' + (-262144 >> 7));
+}
+
+
+if (-524288 >> 7 !== -4096) {
+ $ERROR('#244: -524288 >> 7 === -4096. Actual: ' + (-524288 >> 7));
+}
+
+
+if (-1048576 >> 7 !== -8192) {
+ $ERROR('#245: -1048576 >> 7 === -8192. Actual: ' + (-1048576 >> 7));
+}
+
+
+if (-2097152 >> 7 !== -16384) {
+ $ERROR('#246: -2097152 >> 7 === -16384. Actual: ' + (-2097152 >> 7));
+}
+
+
+if (-4194304 >> 7 !== -32768) {
+ $ERROR('#247: -4194304 >> 7 === -32768. Actual: ' + (-4194304 >> 7));
+}
+
+
+if (-8388608 >> 7 !== -65536) {
+ $ERROR('#248: -8388608 >> 7 === -65536. Actual: ' + (-8388608 >> 7));
+}
+
+
+if (-16777216 >> 7 !== -131072) {
+ $ERROR('#249: -16777216 >> 7 === -131072. Actual: ' + (-16777216 >> 7));
+}
+
+
+if (-33554432 >> 7 !== -262144) {
+ $ERROR('#250: -33554432 >> 7 === -262144. Actual: ' + (-33554432 >> 7));
+}
+
+
+if (-67108864 >> 7 !== -524288) {
+ $ERROR('#251: -67108864 >> 7 === -524288. Actual: ' + (-67108864 >> 7));
+}
+
+
+if (-134217728 >> 7 !== -1048576) {
+ $ERROR('#252: -134217728 >> 7 === -1048576. Actual: ' + (-134217728 >> 7));
+}
+
+
+if (-268435456 >> 7 !== -2097152) {
+ $ERROR('#253: -268435456 >> 7 === -2097152. Actual: ' + (-268435456 >> 7));
+}
+
+
+if (-536870912 >> 7 !== -4194304) {
+ $ERROR('#254: -536870912 >> 7 === -4194304. Actual: ' + (-536870912 >> 7));
+}
+
+
+if (-1073741824 >> 7 !== -8388608) {
+ $ERROR('#255: -1073741824 >> 7 === -8388608. Actual: ' + (-1073741824 >> 7));
+}
+
+
+if (-2147483648 >> 7 !== -16777216) {
+ $ERROR('#256: -2147483648 >> 7 === -16777216. Actual: ' + (-2147483648 >> 7));
+}
+
+
+if (-1 >> 8 !== -1) {
+ $ERROR('#257: -1 >> 8 === -1. Actual: ' + (-1 >> 8));
+}
+
+
+if (-2 >> 8 !== -1) {
+ $ERROR('#258: -2 >> 8 === -1. Actual: ' + (-2 >> 8));
+}
+
+
+if (-4 >> 8 !== -1) {
+ $ERROR('#259: -4 >> 8 === -1. Actual: ' + (-4 >> 8));
+}
+
+
+if (-8 >> 8 !== -1) {
+ $ERROR('#260: -8 >> 8 === -1. Actual: ' + (-8 >> 8));
+}
+
+
+if (-16 >> 8 !== -1) {
+ $ERROR('#261: -16 >> 8 === -1. Actual: ' + (-16 >> 8));
+}
+
+
+if (-32 >> 8 !== -1) {
+ $ERROR('#262: -32 >> 8 === -1. Actual: ' + (-32 >> 8));
+}
+
+
+if (-64 >> 8 !== -1) {
+ $ERROR('#263: -64 >> 8 === -1. Actual: ' + (-64 >> 8));
+}
+
+
+if (-128 >> 8 !== -1) {
+ $ERROR('#264: -128 >> 8 === -1. Actual: ' + (-128 >> 8));
+}
+
+
+if (-256 >> 8 !== -1) {
+ $ERROR('#265: -256 >> 8 === -1. Actual: ' + (-256 >> 8));
+}
+
+
+if (-512 >> 8 !== -2) {
+ $ERROR('#266: -512 >> 8 === -2. Actual: ' + (-512 >> 8));
+}
+
+
+if (-1024 >> 8 !== -4) {
+ $ERROR('#267: -1024 >> 8 === -4. Actual: ' + (-1024 >> 8));
+}
+
+
+if (-2048 >> 8 !== -8) {
+ $ERROR('#268: -2048 >> 8 === -8. Actual: ' + (-2048 >> 8));
+}
+
+
+if (-4096 >> 8 !== -16) {
+ $ERROR('#269: -4096 >> 8 === -16. Actual: ' + (-4096 >> 8));
+}
+
+
+if (-8192 >> 8 !== -32) {
+ $ERROR('#270: -8192 >> 8 === -32. Actual: ' + (-8192 >> 8));
+}
+
+
+if (-16384 >> 8 !== -64) {
+ $ERROR('#271: -16384 >> 8 === -64. Actual: ' + (-16384 >> 8));
+}
+
+
+if (-32768 >> 8 !== -128) {
+ $ERROR('#272: -32768 >> 8 === -128. Actual: ' + (-32768 >> 8));
+}
+
+
+if (-65536 >> 8 !== -256) {
+ $ERROR('#273: -65536 >> 8 === -256. Actual: ' + (-65536 >> 8));
+}
+
+
+if (-131072 >> 8 !== -512) {
+ $ERROR('#274: -131072 >> 8 === -512. Actual: ' + (-131072 >> 8));
+}
+
+
+if (-262144 >> 8 !== -1024) {
+ $ERROR('#275: -262144 >> 8 === -1024. Actual: ' + (-262144 >> 8));
+}
+
+
+if (-524288 >> 8 !== -2048) {
+ $ERROR('#276: -524288 >> 8 === -2048. Actual: ' + (-524288 >> 8));
+}
+
+
+if (-1048576 >> 8 !== -4096) {
+ $ERROR('#277: -1048576 >> 8 === -4096. Actual: ' + (-1048576 >> 8));
+}
+
+
+if (-2097152 >> 8 !== -8192) {
+ $ERROR('#278: -2097152 >> 8 === -8192. Actual: ' + (-2097152 >> 8));
+}
+
+
+if (-4194304 >> 8 !== -16384) {
+ $ERROR('#279: -4194304 >> 8 === -16384. Actual: ' + (-4194304 >> 8));
+}
+
+
+if (-8388608 >> 8 !== -32768) {
+ $ERROR('#280: -8388608 >> 8 === -32768. Actual: ' + (-8388608 >> 8));
+}
+
+
+if (-16777216 >> 8 !== -65536) {
+ $ERROR('#281: -16777216 >> 8 === -65536. Actual: ' + (-16777216 >> 8));
+}
+
+
+if (-33554432 >> 8 !== -131072) {
+ $ERROR('#282: -33554432 >> 8 === -131072. Actual: ' + (-33554432 >> 8));
+}
+
+
+if (-67108864 >> 8 !== -262144) {
+ $ERROR('#283: -67108864 >> 8 === -262144. Actual: ' + (-67108864 >> 8));
+}
+
+
+if (-134217728 >> 8 !== -524288) {
+ $ERROR('#284: -134217728 >> 8 === -524288. Actual: ' + (-134217728 >> 8));
+}
+
+
+if (-268435456 >> 8 !== -1048576) {
+ $ERROR('#285: -268435456 >> 8 === -1048576. Actual: ' + (-268435456 >> 8));
+}
+
+
+if (-536870912 >> 8 !== -2097152) {
+ $ERROR('#286: -536870912 >> 8 === -2097152. Actual: ' + (-536870912 >> 8));
+}
+
+
+if (-1073741824 >> 8 !== -4194304) {
+ $ERROR('#287: -1073741824 >> 8 === -4194304. Actual: ' + (-1073741824 >> 8));
+}
+
+
+if (-2147483648 >> 8 !== -8388608) {
+ $ERROR('#288: -2147483648 >> 8 === -8388608. Actual: ' + (-2147483648 >> 8));
+}
+
+
+if (-1 >> 9 !== -1) {
+ $ERROR('#289: -1 >> 9 === -1. Actual: ' + (-1 >> 9));
+}
+
+
+if (-2 >> 9 !== -1) {
+ $ERROR('#290: -2 >> 9 === -1. Actual: ' + (-2 >> 9));
+}
+
+
+if (-4 >> 9 !== -1) {
+ $ERROR('#291: -4 >> 9 === -1. Actual: ' + (-4 >> 9));
+}
+
+
+if (-8 >> 9 !== -1) {
+ $ERROR('#292: -8 >> 9 === -1. Actual: ' + (-8 >> 9));
+}
+
+
+if (-16 >> 9 !== -1) {
+ $ERROR('#293: -16 >> 9 === -1. Actual: ' + (-16 >> 9));
+}
+
+
+if (-32 >> 9 !== -1) {
+ $ERROR('#294: -32 >> 9 === -1. Actual: ' + (-32 >> 9));
+}
+
+
+if (-64 >> 9 !== -1) {
+ $ERROR('#295: -64 >> 9 === -1. Actual: ' + (-64 >> 9));
+}
+
+
+if (-128 >> 9 !== -1) {
+ $ERROR('#296: -128 >> 9 === -1. Actual: ' + (-128 >> 9));
+}
+
+
+if (-256 >> 9 !== -1) {
+ $ERROR('#297: -256 >> 9 === -1. Actual: ' + (-256 >> 9));
+}
+
+
+if (-512 >> 9 !== -1) {
+ $ERROR('#298: -512 >> 9 === -1. Actual: ' + (-512 >> 9));
+}
+
+
+if (-1024 >> 9 !== -2) {
+ $ERROR('#299: -1024 >> 9 === -2. Actual: ' + (-1024 >> 9));
+}
+
+
+if (-2048 >> 9 !== -4) {
+ $ERROR('#300: -2048 >> 9 === -4. Actual: ' + (-2048 >> 9));
+}
+
+
+if (-4096 >> 9 !== -8) {
+ $ERROR('#301: -4096 >> 9 === -8. Actual: ' + (-4096 >> 9));
+}
+
+
+if (-8192 >> 9 !== -16) {
+ $ERROR('#302: -8192 >> 9 === -16. Actual: ' + (-8192 >> 9));
+}
+
+
+if (-16384 >> 9 !== -32) {
+ $ERROR('#303: -16384 >> 9 === -32. Actual: ' + (-16384 >> 9));
+}
+
+
+if (-32768 >> 9 !== -64) {
+ $ERROR('#304: -32768 >> 9 === -64. Actual: ' + (-32768 >> 9));
+}
+
+
+if (-65536 >> 9 !== -128) {
+ $ERROR('#305: -65536 >> 9 === -128. Actual: ' + (-65536 >> 9));
+}
+
+
+if (-131072 >> 9 !== -256) {
+ $ERROR('#306: -131072 >> 9 === -256. Actual: ' + (-131072 >> 9));
+}
+
+
+if (-262144 >> 9 !== -512) {
+ $ERROR('#307: -262144 >> 9 === -512. Actual: ' + (-262144 >> 9));
+}
+
+
+if (-524288 >> 9 !== -1024) {
+ $ERROR('#308: -524288 >> 9 === -1024. Actual: ' + (-524288 >> 9));
+}
+
+
+if (-1048576 >> 9 !== -2048) {
+ $ERROR('#309: -1048576 >> 9 === -2048. Actual: ' + (-1048576 >> 9));
+}
+
+
+if (-2097152 >> 9 !== -4096) {
+ $ERROR('#310: -2097152 >> 9 === -4096. Actual: ' + (-2097152 >> 9));
+}
+
+
+if (-4194304 >> 9 !== -8192) {
+ $ERROR('#311: -4194304 >> 9 === -8192. Actual: ' + (-4194304 >> 9));
+}
+
+
+if (-8388608 >> 9 !== -16384) {
+ $ERROR('#312: -8388608 >> 9 === -16384. Actual: ' + (-8388608 >> 9));
+}
+
+
+if (-16777216 >> 9 !== -32768) {
+ $ERROR('#313: -16777216 >> 9 === -32768. Actual: ' + (-16777216 >> 9));
+}
+
+
+if (-33554432 >> 9 !== -65536) {
+ $ERROR('#314: -33554432 >> 9 === -65536. Actual: ' + (-33554432 >> 9));
+}
+
+
+if (-67108864 >> 9 !== -131072) {
+ $ERROR('#315: -67108864 >> 9 === -131072. Actual: ' + (-67108864 >> 9));
+}
+
+
+if (-134217728 >> 9 !== -262144) {
+ $ERROR('#316: -134217728 >> 9 === -262144. Actual: ' + (-134217728 >> 9));
+}
+
+
+if (-268435456 >> 9 !== -524288) {
+ $ERROR('#317: -268435456 >> 9 === -524288. Actual: ' + (-268435456 >> 9));
+}
+
+
+if (-536870912 >> 9 !== -1048576) {
+ $ERROR('#318: -536870912 >> 9 === -1048576. Actual: ' + (-536870912 >> 9));
+}
+
+
+if (-1073741824 >> 9 !== -2097152) {
+ $ERROR('#319: -1073741824 >> 9 === -2097152. Actual: ' + (-1073741824 >> 9));
+}
+
+
+if (-2147483648 >> 9 !== -4194304) {
+ $ERROR('#320: -2147483648 >> 9 === -4194304. Actual: ' + (-2147483648 >> 9));
+}
+
+
+if (-1 >> 10 !== -1) {
+ $ERROR('#321: -1 >> 10 === -1. Actual: ' + (-1 >> 10));
+}
+
+
+if (-2 >> 10 !== -1) {
+ $ERROR('#322: -2 >> 10 === -1. Actual: ' + (-2 >> 10));
+}
+
+
+if (-4 >> 10 !== -1) {
+ $ERROR('#323: -4 >> 10 === -1. Actual: ' + (-4 >> 10));
+}
+
+
+if (-8 >> 10 !== -1) {
+ $ERROR('#324: -8 >> 10 === -1. Actual: ' + (-8 >> 10));
+}
+
+
+if (-16 >> 10 !== -1) {
+ $ERROR('#325: -16 >> 10 === -1. Actual: ' + (-16 >> 10));
+}
+
+
+if (-32 >> 10 !== -1) {
+ $ERROR('#326: -32 >> 10 === -1. Actual: ' + (-32 >> 10));
+}
+
+
+if (-64 >> 10 !== -1) {
+ $ERROR('#327: -64 >> 10 === -1. Actual: ' + (-64 >> 10));
+}
+
+
+if (-128 >> 10 !== -1) {
+ $ERROR('#328: -128 >> 10 === -1. Actual: ' + (-128 >> 10));
+}
+
+
+if (-256 >> 10 !== -1) {
+ $ERROR('#329: -256 >> 10 === -1. Actual: ' + (-256 >> 10));
+}
+
+
+if (-512 >> 10 !== -1) {
+ $ERROR('#330: -512 >> 10 === -1. Actual: ' + (-512 >> 10));
+}
+
+
+if (-1024 >> 10 !== -1) {
+ $ERROR('#331: -1024 >> 10 === -1. Actual: ' + (-1024 >> 10));
+}
+
+
+if (-2048 >> 10 !== -2) {
+ $ERROR('#332: -2048 >> 10 === -2. Actual: ' + (-2048 >> 10));
+}
+
+
+if (-4096 >> 10 !== -4) {
+ $ERROR('#333: -4096 >> 10 === -4. Actual: ' + (-4096 >> 10));
+}
+
+
+if (-8192 >> 10 !== -8) {
+ $ERROR('#334: -8192 >> 10 === -8. Actual: ' + (-8192 >> 10));
+}
+
+
+if (-16384 >> 10 !== -16) {
+ $ERROR('#335: -16384 >> 10 === -16. Actual: ' + (-16384 >> 10));
+}
+
+
+if (-32768 >> 10 !== -32) {
+ $ERROR('#336: -32768 >> 10 === -32. Actual: ' + (-32768 >> 10));
+}
+
+
+if (-65536 >> 10 !== -64) {
+ $ERROR('#337: -65536 >> 10 === -64. Actual: ' + (-65536 >> 10));
+}
+
+
+if (-131072 >> 10 !== -128) {
+ $ERROR('#338: -131072 >> 10 === -128. Actual: ' + (-131072 >> 10));
+}
+
+
+if (-262144 >> 10 !== -256) {
+ $ERROR('#339: -262144 >> 10 === -256. Actual: ' + (-262144 >> 10));
+}
+
+
+if (-524288 >> 10 !== -512) {
+ $ERROR('#340: -524288 >> 10 === -512. Actual: ' + (-524288 >> 10));
+}
+
+
+if (-1048576 >> 10 !== -1024) {
+ $ERROR('#341: -1048576 >> 10 === -1024. Actual: ' + (-1048576 >> 10));
+}
+
+
+if (-2097152 >> 10 !== -2048) {
+ $ERROR('#342: -2097152 >> 10 === -2048. Actual: ' + (-2097152 >> 10));
+}
+
+
+if (-4194304 >> 10 !== -4096) {
+ $ERROR('#343: -4194304 >> 10 === -4096. Actual: ' + (-4194304 >> 10));
+}
+
+
+if (-8388608 >> 10 !== -8192) {
+ $ERROR('#344: -8388608 >> 10 === -8192. Actual: ' + (-8388608 >> 10));
+}
+
+
+if (-16777216 >> 10 !== -16384) {
+ $ERROR('#345: -16777216 >> 10 === -16384. Actual: ' + (-16777216 >> 10));
+}
+
+
+if (-33554432 >> 10 !== -32768) {
+ $ERROR('#346: -33554432 >> 10 === -32768. Actual: ' + (-33554432 >> 10));
+}
+
+
+if (-67108864 >> 10 !== -65536) {
+ $ERROR('#347: -67108864 >> 10 === -65536. Actual: ' + (-67108864 >> 10));
+}
+
+
+if (-134217728 >> 10 !== -131072) {
+ $ERROR('#348: -134217728 >> 10 === -131072. Actual: ' + (-134217728 >> 10));
+}
+
+
+if (-268435456 >> 10 !== -262144) {
+ $ERROR('#349: -268435456 >> 10 === -262144. Actual: ' + (-268435456 >> 10));
+}
+
+
+if (-536870912 >> 10 !== -524288) {
+ $ERROR('#350: -536870912 >> 10 === -524288. Actual: ' + (-536870912 >> 10));
+}
+
+
+if (-1073741824 >> 10 !== -1048576) {
+ $ERROR('#351: -1073741824 >> 10 === -1048576. Actual: ' + (-1073741824 >> 10));
+}
+
+
+if (-2147483648 >> 10 !== -2097152) {
+ $ERROR('#352: -2147483648 >> 10 === -2097152. Actual: ' + (-2147483648 >> 10));
+}
+
+
+if (-1 >> 11 !== -1) {
+ $ERROR('#353: -1 >> 11 === -1. Actual: ' + (-1 >> 11));
+}
+
+
+if (-2 >> 11 !== -1) {
+ $ERROR('#354: -2 >> 11 === -1. Actual: ' + (-2 >> 11));
+}
+
+
+if (-4 >> 11 !== -1) {
+ $ERROR('#355: -4 >> 11 === -1. Actual: ' + (-4 >> 11));
+}
+
+
+if (-8 >> 11 !== -1) {
+ $ERROR('#356: -8 >> 11 === -1. Actual: ' + (-8 >> 11));
+}
+
+
+if (-16 >> 11 !== -1) {
+ $ERROR('#357: -16 >> 11 === -1. Actual: ' + (-16 >> 11));
+}
+
+
+if (-32 >> 11 !== -1) {
+ $ERROR('#358: -32 >> 11 === -1. Actual: ' + (-32 >> 11));
+}
+
+
+if (-64 >> 11 !== -1) {
+ $ERROR('#359: -64 >> 11 === -1. Actual: ' + (-64 >> 11));
+}
+
+
+if (-128 >> 11 !== -1) {
+ $ERROR('#360: -128 >> 11 === -1. Actual: ' + (-128 >> 11));
+}
+
+
+if (-256 >> 11 !== -1) {
+ $ERROR('#361: -256 >> 11 === -1. Actual: ' + (-256 >> 11));
+}
+
+
+if (-512 >> 11 !== -1) {
+ $ERROR('#362: -512 >> 11 === -1. Actual: ' + (-512 >> 11));
+}
+
+
+if (-1024 >> 11 !== -1) {
+ $ERROR('#363: -1024 >> 11 === -1. Actual: ' + (-1024 >> 11));
+}
+
+
+if (-2048 >> 11 !== -1) {
+ $ERROR('#364: -2048 >> 11 === -1. Actual: ' + (-2048 >> 11));
+}
+
+
+if (-4096 >> 11 !== -2) {
+ $ERROR('#365: -4096 >> 11 === -2. Actual: ' + (-4096 >> 11));
+}
+
+
+if (-8192 >> 11 !== -4) {
+ $ERROR('#366: -8192 >> 11 === -4. Actual: ' + (-8192 >> 11));
+}
+
+
+if (-16384 >> 11 !== -8) {
+ $ERROR('#367: -16384 >> 11 === -8. Actual: ' + (-16384 >> 11));
+}
+
+
+if (-32768 >> 11 !== -16) {
+ $ERROR('#368: -32768 >> 11 === -16. Actual: ' + (-32768 >> 11));
+}
+
+
+if (-65536 >> 11 !== -32) {
+ $ERROR('#369: -65536 >> 11 === -32. Actual: ' + (-65536 >> 11));
+}
+
+
+if (-131072 >> 11 !== -64) {
+ $ERROR('#370: -131072 >> 11 === -64. Actual: ' + (-131072 >> 11));
+}
+
+
+if (-262144 >> 11 !== -128) {
+ $ERROR('#371: -262144 >> 11 === -128. Actual: ' + (-262144 >> 11));
+}
+
+
+if (-524288 >> 11 !== -256) {
+ $ERROR('#372: -524288 >> 11 === -256. Actual: ' + (-524288 >> 11));
+}
+
+
+if (-1048576 >> 11 !== -512) {
+ $ERROR('#373: -1048576 >> 11 === -512. Actual: ' + (-1048576 >> 11));
+}
+
+
+if (-2097152 >> 11 !== -1024) {
+ $ERROR('#374: -2097152 >> 11 === -1024. Actual: ' + (-2097152 >> 11));
+}
+
+
+if (-4194304 >> 11 !== -2048) {
+ $ERROR('#375: -4194304 >> 11 === -2048. Actual: ' + (-4194304 >> 11));
+}
+
+
+if (-8388608 >> 11 !== -4096) {
+ $ERROR('#376: -8388608 >> 11 === -4096. Actual: ' + (-8388608 >> 11));
+}
+
+
+if (-16777216 >> 11 !== -8192) {
+ $ERROR('#377: -16777216 >> 11 === -8192. Actual: ' + (-16777216 >> 11));
+}
+
+
+if (-33554432 >> 11 !== -16384) {
+ $ERROR('#378: -33554432 >> 11 === -16384. Actual: ' + (-33554432 >> 11));
+}
+
+
+if (-67108864 >> 11 !== -32768) {
+ $ERROR('#379: -67108864 >> 11 === -32768. Actual: ' + (-67108864 >> 11));
+}
+
+
+if (-134217728 >> 11 !== -65536) {
+ $ERROR('#380: -134217728 >> 11 === -65536. Actual: ' + (-134217728 >> 11));
+}
+
+
+if (-268435456 >> 11 !== -131072) {
+ $ERROR('#381: -268435456 >> 11 === -131072. Actual: ' + (-268435456 >> 11));
+}
+
+
+if (-536870912 >> 11 !== -262144) {
+ $ERROR('#382: -536870912 >> 11 === -262144. Actual: ' + (-536870912 >> 11));
+}
+
+
+if (-1073741824 >> 11 !== -524288) {
+ $ERROR('#383: -1073741824 >> 11 === -524288. Actual: ' + (-1073741824 >> 11));
+}
+
+
+if (-2147483648 >> 11 !== -1048576) {
+ $ERROR('#384: -2147483648 >> 11 === -1048576. Actual: ' + (-2147483648 >> 11));
+}
+
+
+if (-1 >> 12 !== -1) {
+ $ERROR('#385: -1 >> 12 === -1. Actual: ' + (-1 >> 12));
+}
+
+
+if (-2 >> 12 !== -1) {
+ $ERROR('#386: -2 >> 12 === -1. Actual: ' + (-2 >> 12));
+}
+
+
+if (-4 >> 12 !== -1) {
+ $ERROR('#387: -4 >> 12 === -1. Actual: ' + (-4 >> 12));
+}
+
+
+if (-8 >> 12 !== -1) {
+ $ERROR('#388: -8 >> 12 === -1. Actual: ' + (-8 >> 12));
+}
+
+
+if (-16 >> 12 !== -1) {
+ $ERROR('#389: -16 >> 12 === -1. Actual: ' + (-16 >> 12));
+}
+
+
+if (-32 >> 12 !== -1) {
+ $ERROR('#390: -32 >> 12 === -1. Actual: ' + (-32 >> 12));
+}
+
+
+if (-64 >> 12 !== -1) {
+ $ERROR('#391: -64 >> 12 === -1. Actual: ' + (-64 >> 12));
+}
+
+
+if (-128 >> 12 !== -1) {
+ $ERROR('#392: -128 >> 12 === -1. Actual: ' + (-128 >> 12));
+}
+
+
+if (-256 >> 12 !== -1) {
+ $ERROR('#393: -256 >> 12 === -1. Actual: ' + (-256 >> 12));
+}
+
+
+if (-512 >> 12 !== -1) {
+ $ERROR('#394: -512 >> 12 === -1. Actual: ' + (-512 >> 12));
+}
+
+
+if (-1024 >> 12 !== -1) {
+ $ERROR('#395: -1024 >> 12 === -1. Actual: ' + (-1024 >> 12));
+}
+
+
+if (-2048 >> 12 !== -1) {
+ $ERROR('#396: -2048 >> 12 === -1. Actual: ' + (-2048 >> 12));
+}
+
+
+if (-4096 >> 12 !== -1) {
+ $ERROR('#397: -4096 >> 12 === -1. Actual: ' + (-4096 >> 12));
+}
+
+
+if (-8192 >> 12 !== -2) {
+ $ERROR('#398: -8192 >> 12 === -2. Actual: ' + (-8192 >> 12));
+}
+
+
+if (-16384 >> 12 !== -4) {
+ $ERROR('#399: -16384 >> 12 === -4. Actual: ' + (-16384 >> 12));
+}
+
+
+if (-32768 >> 12 !== -8) {
+ $ERROR('#400: -32768 >> 12 === -8. Actual: ' + (-32768 >> 12));
+}
+
+
+if (-65536 >> 12 !== -16) {
+ $ERROR('#401: -65536 >> 12 === -16. Actual: ' + (-65536 >> 12));
+}
+
+
+if (-131072 >> 12 !== -32) {
+ $ERROR('#402: -131072 >> 12 === -32. Actual: ' + (-131072 >> 12));
+}
+
+
+if (-262144 >> 12 !== -64) {
+ $ERROR('#403: -262144 >> 12 === -64. Actual: ' + (-262144 >> 12));
+}
+
+
+if (-524288 >> 12 !== -128) {
+ $ERROR('#404: -524288 >> 12 === -128. Actual: ' + (-524288 >> 12));
+}
+
+
+if (-1048576 >> 12 !== -256) {
+ $ERROR('#405: -1048576 >> 12 === -256. Actual: ' + (-1048576 >> 12));
+}
+
+
+if (-2097152 >> 12 !== -512) {
+ $ERROR('#406: -2097152 >> 12 === -512. Actual: ' + (-2097152 >> 12));
+}
+
+
+if (-4194304 >> 12 !== -1024) {
+ $ERROR('#407: -4194304 >> 12 === -1024. Actual: ' + (-4194304 >> 12));
+}
+
+
+if (-8388608 >> 12 !== -2048) {
+ $ERROR('#408: -8388608 >> 12 === -2048. Actual: ' + (-8388608 >> 12));
+}
+
+
+if (-16777216 >> 12 !== -4096) {
+ $ERROR('#409: -16777216 >> 12 === -4096. Actual: ' + (-16777216 >> 12));
+}
+
+
+if (-33554432 >> 12 !== -8192) {
+ $ERROR('#410: -33554432 >> 12 === -8192. Actual: ' + (-33554432 >> 12));
+}
+
+
+if (-67108864 >> 12 !== -16384) {
+ $ERROR('#411: -67108864 >> 12 === -16384. Actual: ' + (-67108864 >> 12));
+}
+
+
+if (-134217728 >> 12 !== -32768) {
+ $ERROR('#412: -134217728 >> 12 === -32768. Actual: ' + (-134217728 >> 12));
+}
+
+
+if (-268435456 >> 12 !== -65536) {
+ $ERROR('#413: -268435456 >> 12 === -65536. Actual: ' + (-268435456 >> 12));
+}
+
+
+if (-536870912 >> 12 !== -131072) {
+ $ERROR('#414: -536870912 >> 12 === -131072. Actual: ' + (-536870912 >> 12));
+}
+
+
+if (-1073741824 >> 12 !== -262144) {
+ $ERROR('#415: -1073741824 >> 12 === -262144. Actual: ' + (-1073741824 >> 12));
+}
+
+
+if (-2147483648 >> 12 !== -524288) {
+ $ERROR('#416: -2147483648 >> 12 === -524288. Actual: ' + (-2147483648 >> 12));
+}
+
+
+if (-1 >> 13 !== -1) {
+ $ERROR('#417: -1 >> 13 === -1. Actual: ' + (-1 >> 13));
+}
+
+
+if (-2 >> 13 !== -1) {
+ $ERROR('#418: -2 >> 13 === -1. Actual: ' + (-2 >> 13));
+}
+
+
+if (-4 >> 13 !== -1) {
+ $ERROR('#419: -4 >> 13 === -1. Actual: ' + (-4 >> 13));
+}
+
+
+if (-8 >> 13 !== -1) {
+ $ERROR('#420: -8 >> 13 === -1. Actual: ' + (-8 >> 13));
+}
+
+
+if (-16 >> 13 !== -1) {
+ $ERROR('#421: -16 >> 13 === -1. Actual: ' + (-16 >> 13));
+}
+
+
+if (-32 >> 13 !== -1) {
+ $ERROR('#422: -32 >> 13 === -1. Actual: ' + (-32 >> 13));
+}
+
+
+if (-64 >> 13 !== -1) {
+ $ERROR('#423: -64 >> 13 === -1. Actual: ' + (-64 >> 13));
+}
+
+
+if (-128 >> 13 !== -1) {
+ $ERROR('#424: -128 >> 13 === -1. Actual: ' + (-128 >> 13));
+}
+
+
+if (-256 >> 13 !== -1) {
+ $ERROR('#425: -256 >> 13 === -1. Actual: ' + (-256 >> 13));
+}
+
+
+if (-512 >> 13 !== -1) {
+ $ERROR('#426: -512 >> 13 === -1. Actual: ' + (-512 >> 13));
+}
+
+
+if (-1024 >> 13 !== -1) {
+ $ERROR('#427: -1024 >> 13 === -1. Actual: ' + (-1024 >> 13));
+}
+
+
+if (-2048 >> 13 !== -1) {
+ $ERROR('#428: -2048 >> 13 === -1. Actual: ' + (-2048 >> 13));
+}
+
+
+if (-4096 >> 13 !== -1) {
+ $ERROR('#429: -4096 >> 13 === -1. Actual: ' + (-4096 >> 13));
+}
+
+
+if (-8192 >> 13 !== -1) {
+ $ERROR('#430: -8192 >> 13 === -1. Actual: ' + (-8192 >> 13));
+}
+
+
+if (-16384 >> 13 !== -2) {
+ $ERROR('#431: -16384 >> 13 === -2. Actual: ' + (-16384 >> 13));
+}
+
+
+if (-32768 >> 13 !== -4) {
+ $ERROR('#432: -32768 >> 13 === -4. Actual: ' + (-32768 >> 13));
+}
+
+
+if (-65536 >> 13 !== -8) {
+ $ERROR('#433: -65536 >> 13 === -8. Actual: ' + (-65536 >> 13));
+}
+
+
+if (-131072 >> 13 !== -16) {
+ $ERROR('#434: -131072 >> 13 === -16. Actual: ' + (-131072 >> 13));
+}
+
+
+if (-262144 >> 13 !== -32) {
+ $ERROR('#435: -262144 >> 13 === -32. Actual: ' + (-262144 >> 13));
+}
+
+
+if (-524288 >> 13 !== -64) {
+ $ERROR('#436: -524288 >> 13 === -64. Actual: ' + (-524288 >> 13));
+}
+
+
+if (-1048576 >> 13 !== -128) {
+ $ERROR('#437: -1048576 >> 13 === -128. Actual: ' + (-1048576 >> 13));
+}
+
+
+if (-2097152 >> 13 !== -256) {
+ $ERROR('#438: -2097152 >> 13 === -256. Actual: ' + (-2097152 >> 13));
+}
+
+
+if (-4194304 >> 13 !== -512) {
+ $ERROR('#439: -4194304 >> 13 === -512. Actual: ' + (-4194304 >> 13));
+}
+
+
+if (-8388608 >> 13 !== -1024) {
+ $ERROR('#440: -8388608 >> 13 === -1024. Actual: ' + (-8388608 >> 13));
+}
+
+
+if (-16777216 >> 13 !== -2048) {
+ $ERROR('#441: -16777216 >> 13 === -2048. Actual: ' + (-16777216 >> 13));
+}
+
+
+if (-33554432 >> 13 !== -4096) {
+ $ERROR('#442: -33554432 >> 13 === -4096. Actual: ' + (-33554432 >> 13));
+}
+
+
+if (-67108864 >> 13 !== -8192) {
+ $ERROR('#443: -67108864 >> 13 === -8192. Actual: ' + (-67108864 >> 13));
+}
+
+
+if (-134217728 >> 13 !== -16384) {
+ $ERROR('#444: -134217728 >> 13 === -16384. Actual: ' + (-134217728 >> 13));
+}
+
+
+if (-268435456 >> 13 !== -32768) {
+ $ERROR('#445: -268435456 >> 13 === -32768. Actual: ' + (-268435456 >> 13));
+}
+
+
+if (-536870912 >> 13 !== -65536) {
+ $ERROR('#446: -536870912 >> 13 === -65536. Actual: ' + (-536870912 >> 13));
+}
+
+
+if (-1073741824 >> 13 !== -131072) {
+ $ERROR('#447: -1073741824 >> 13 === -131072. Actual: ' + (-1073741824 >> 13));
+}
+
+
+if (-2147483648 >> 13 !== -262144) {
+ $ERROR('#448: -2147483648 >> 13 === -262144. Actual: ' + (-2147483648 >> 13));
+}
+
+
+if (-1 >> 14 !== -1) {
+ $ERROR('#449: -1 >> 14 === -1. Actual: ' + (-1 >> 14));
+}
+
+
+if (-2 >> 14 !== -1) {
+ $ERROR('#450: -2 >> 14 === -1. Actual: ' + (-2 >> 14));
+}
+
+
+if (-4 >> 14 !== -1) {
+ $ERROR('#451: -4 >> 14 === -1. Actual: ' + (-4 >> 14));
+}
+
+
+if (-8 >> 14 !== -1) {
+ $ERROR('#452: -8 >> 14 === -1. Actual: ' + (-8 >> 14));
+}
+
+
+if (-16 >> 14 !== -1) {
+ $ERROR('#453: -16 >> 14 === -1. Actual: ' + (-16 >> 14));
+}
+
+
+if (-32 >> 14 !== -1) {
+ $ERROR('#454: -32 >> 14 === -1. Actual: ' + (-32 >> 14));
+}
+
+
+if (-64 >> 14 !== -1) {
+ $ERROR('#455: -64 >> 14 === -1. Actual: ' + (-64 >> 14));
+}
+
+
+if (-128 >> 14 !== -1) {
+ $ERROR('#456: -128 >> 14 === -1. Actual: ' + (-128 >> 14));
+}
+
+
+if (-256 >> 14 !== -1) {
+ $ERROR('#457: -256 >> 14 === -1. Actual: ' + (-256 >> 14));
+}
+
+
+if (-512 >> 14 !== -1) {
+ $ERROR('#458: -512 >> 14 === -1. Actual: ' + (-512 >> 14));
+}
+
+
+if (-1024 >> 14 !== -1) {
+ $ERROR('#459: -1024 >> 14 === -1. Actual: ' + (-1024 >> 14));
+}
+
+
+if (-2048 >> 14 !== -1) {
+ $ERROR('#460: -2048 >> 14 === -1. Actual: ' + (-2048 >> 14));
+}
+
+
+if (-4096 >> 14 !== -1) {
+ $ERROR('#461: -4096 >> 14 === -1. Actual: ' + (-4096 >> 14));
+}
+
+
+if (-8192 >> 14 !== -1) {
+ $ERROR('#462: -8192 >> 14 === -1. Actual: ' + (-8192 >> 14));
+}
+
+
+if (-16384 >> 14 !== -1) {
+ $ERROR('#463: -16384 >> 14 === -1. Actual: ' + (-16384 >> 14));
+}
+
+
+if (-32768 >> 14 !== -2) {
+ $ERROR('#464: -32768 >> 14 === -2. Actual: ' + (-32768 >> 14));
+}
+
+
+if (-65536 >> 14 !== -4) {
+ $ERROR('#465: -65536 >> 14 === -4. Actual: ' + (-65536 >> 14));
+}
+
+
+if (-131072 >> 14 !== -8) {
+ $ERROR('#466: -131072 >> 14 === -8. Actual: ' + (-131072 >> 14));
+}
+
+
+if (-262144 >> 14 !== -16) {
+ $ERROR('#467: -262144 >> 14 === -16. Actual: ' + (-262144 >> 14));
+}
+
+
+if (-524288 >> 14 !== -32) {
+ $ERROR('#468: -524288 >> 14 === -32. Actual: ' + (-524288 >> 14));
+}
+
+
+if (-1048576 >> 14 !== -64) {
+ $ERROR('#469: -1048576 >> 14 === -64. Actual: ' + (-1048576 >> 14));
+}
+
+
+if (-2097152 >> 14 !== -128) {
+ $ERROR('#470: -2097152 >> 14 === -128. Actual: ' + (-2097152 >> 14));
+}
+
+
+if (-4194304 >> 14 !== -256) {
+ $ERROR('#471: -4194304 >> 14 === -256. Actual: ' + (-4194304 >> 14));
+}
+
+
+if (-8388608 >> 14 !== -512) {
+ $ERROR('#472: -8388608 >> 14 === -512. Actual: ' + (-8388608 >> 14));
+}
+
+
+if (-16777216 >> 14 !== -1024) {
+ $ERROR('#473: -16777216 >> 14 === -1024. Actual: ' + (-16777216 >> 14));
+}
+
+
+if (-33554432 >> 14 !== -2048) {
+ $ERROR('#474: -33554432 >> 14 === -2048. Actual: ' + (-33554432 >> 14));
+}
+
+
+if (-67108864 >> 14 !== -4096) {
+ $ERROR('#475: -67108864 >> 14 === -4096. Actual: ' + (-67108864 >> 14));
+}
+
+
+if (-134217728 >> 14 !== -8192) {
+ $ERROR('#476: -134217728 >> 14 === -8192. Actual: ' + (-134217728 >> 14));
+}
+
+
+if (-268435456 >> 14 !== -16384) {
+ $ERROR('#477: -268435456 >> 14 === -16384. Actual: ' + (-268435456 >> 14));
+}
+
+
+if (-536870912 >> 14 !== -32768) {
+ $ERROR('#478: -536870912 >> 14 === -32768. Actual: ' + (-536870912 >> 14));
+}
+
+
+if (-1073741824 >> 14 !== -65536) {
+ $ERROR('#479: -1073741824 >> 14 === -65536. Actual: ' + (-1073741824 >> 14));
+}
+
+
+if (-2147483648 >> 14 !== -131072) {
+ $ERROR('#480: -2147483648 >> 14 === -131072. Actual: ' + (-2147483648 >> 14));
+}
+
+
+if (-1 >> 15 !== -1) {
+ $ERROR('#481: -1 >> 15 === -1. Actual: ' + (-1 >> 15));
+}
+
+
+if (-2 >> 15 !== -1) {
+ $ERROR('#482: -2 >> 15 === -1. Actual: ' + (-2 >> 15));
+}
+
+
+if (-4 >> 15 !== -1) {
+ $ERROR('#483: -4 >> 15 === -1. Actual: ' + (-4 >> 15));
+}
+
+
+if (-8 >> 15 !== -1) {
+ $ERROR('#484: -8 >> 15 === -1. Actual: ' + (-8 >> 15));
+}
+
+
+if (-16 >> 15 !== -1) {
+ $ERROR('#485: -16 >> 15 === -1. Actual: ' + (-16 >> 15));
+}
+
+
+if (-32 >> 15 !== -1) {
+ $ERROR('#486: -32 >> 15 === -1. Actual: ' + (-32 >> 15));
+}
+
+
+if (-64 >> 15 !== -1) {
+ $ERROR('#487: -64 >> 15 === -1. Actual: ' + (-64 >> 15));
+}
+
+
+if (-128 >> 15 !== -1) {
+ $ERROR('#488: -128 >> 15 === -1. Actual: ' + (-128 >> 15));
+}
+
+
+if (-256 >> 15 !== -1) {
+ $ERROR('#489: -256 >> 15 === -1. Actual: ' + (-256 >> 15));
+}
+
+
+if (-512 >> 15 !== -1) {
+ $ERROR('#490: -512 >> 15 === -1. Actual: ' + (-512 >> 15));
+}
+
+
+if (-1024 >> 15 !== -1) {
+ $ERROR('#491: -1024 >> 15 === -1. Actual: ' + (-1024 >> 15));
+}
+
+
+if (-2048 >> 15 !== -1) {
+ $ERROR('#492: -2048 >> 15 === -1. Actual: ' + (-2048 >> 15));
+}
+
+
+if (-4096 >> 15 !== -1) {
+ $ERROR('#493: -4096 >> 15 === -1. Actual: ' + (-4096 >> 15));
+}
+
+
+if (-8192 >> 15 !== -1) {
+ $ERROR('#494: -8192 >> 15 === -1. Actual: ' + (-8192 >> 15));
+}
+
+
+if (-16384 >> 15 !== -1) {
+ $ERROR('#495: -16384 >> 15 === -1. Actual: ' + (-16384 >> 15));
+}
+
+
+if (-32768 >> 15 !== -1) {
+ $ERROR('#496: -32768 >> 15 === -1. Actual: ' + (-32768 >> 15));
+}
+
+
+if (-65536 >> 15 !== -2) {
+ $ERROR('#497: -65536 >> 15 === -2. Actual: ' + (-65536 >> 15));
+}
+
+
+if (-131072 >> 15 !== -4) {
+ $ERROR('#498: -131072 >> 15 === -4. Actual: ' + (-131072 >> 15));
+}
+
+
+if (-262144 >> 15 !== -8) {
+ $ERROR('#499: -262144 >> 15 === -8. Actual: ' + (-262144 >> 15));
+}
+
+
+if (-524288 >> 15 !== -16) {
+ $ERROR('#500: -524288 >> 15 === -16. Actual: ' + (-524288 >> 15));
+}
+
+
+if (-1048576 >> 15 !== -32) {
+ $ERROR('#501: -1048576 >> 15 === -32. Actual: ' + (-1048576 >> 15));
+}
+
+
+if (-2097152 >> 15 !== -64) {
+ $ERROR('#502: -2097152 >> 15 === -64. Actual: ' + (-2097152 >> 15));
+}
+
+
+if (-4194304 >> 15 !== -128) {
+ $ERROR('#503: -4194304 >> 15 === -128. Actual: ' + (-4194304 >> 15));
+}
+
+
+if (-8388608 >> 15 !== -256) {
+ $ERROR('#504: -8388608 >> 15 === -256. Actual: ' + (-8388608 >> 15));
+}
+
+
+if (-16777216 >> 15 !== -512) {
+ $ERROR('#505: -16777216 >> 15 === -512. Actual: ' + (-16777216 >> 15));
+}
+
+
+if (-33554432 >> 15 !== -1024) {
+ $ERROR('#506: -33554432 >> 15 === -1024. Actual: ' + (-33554432 >> 15));
+}
+
+
+if (-67108864 >> 15 !== -2048) {
+ $ERROR('#507: -67108864 >> 15 === -2048. Actual: ' + (-67108864 >> 15));
+}
+
+
+if (-134217728 >> 15 !== -4096) {
+ $ERROR('#508: -134217728 >> 15 === -4096. Actual: ' + (-134217728 >> 15));
+}
+
+
+if (-268435456 >> 15 !== -8192) {
+ $ERROR('#509: -268435456 >> 15 === -8192. Actual: ' + (-268435456 >> 15));
+}
+
+
+if (-536870912 >> 15 !== -16384) {
+ $ERROR('#510: -536870912 >> 15 === -16384. Actual: ' + (-536870912 >> 15));
+}
+
+
+if (-1073741824 >> 15 !== -32768) {
+ $ERROR('#511: -1073741824 >> 15 === -32768. Actual: ' + (-1073741824 >> 15));
+}
+
+
+if (-2147483648 >> 15 !== -65536) {
+ $ERROR('#512: -2147483648 >> 15 === -65536. Actual: ' + (-2147483648 >> 15));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T2.js
new file mode 100644
index 000000000..77fbfb2c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T2.js
@@ -0,0 +1,2570 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A4_T2;
+ * @section: 11.7.2;
+ * @assertion: Check x >> y operator in distinct points;
+ * @description: ShiftExpression = 2^n - 1, n = 16...31;
+ */
+
+//CHECK
+
+if (-1 >> 16 !== -1) {
+ $ERROR('#513: -1 >> 16 === -1. Actual: ' + (-1 >> 16));
+}
+
+
+if (-2 >> 16 !== -1) {
+ $ERROR('#514: -2 >> 16 === -1. Actual: ' + (-2 >> 16));
+}
+
+
+if (-4 >> 16 !== -1) {
+ $ERROR('#515: -4 >> 16 === -1. Actual: ' + (-4 >> 16));
+}
+
+
+if (-8 >> 16 !== -1) {
+ $ERROR('#516: -8 >> 16 === -1. Actual: ' + (-8 >> 16));
+}
+
+
+if (-16 >> 16 !== -1) {
+ $ERROR('#517: -16 >> 16 === -1. Actual: ' + (-16 >> 16));
+}
+
+
+if (-32 >> 16 !== -1) {
+ $ERROR('#518: -32 >> 16 === -1. Actual: ' + (-32 >> 16));
+}
+
+
+if (-64 >> 16 !== -1) {
+ $ERROR('#519: -64 >> 16 === -1. Actual: ' + (-64 >> 16));
+}
+
+
+if (-128 >> 16 !== -1) {
+ $ERROR('#520: -128 >> 16 === -1. Actual: ' + (-128 >> 16));
+}
+
+
+if (-256 >> 16 !== -1) {
+ $ERROR('#521: -256 >> 16 === -1. Actual: ' + (-256 >> 16));
+}
+
+
+if (-512 >> 16 !== -1) {
+ $ERROR('#522: -512 >> 16 === -1. Actual: ' + (-512 >> 16));
+}
+
+
+if (-1024 >> 16 !== -1) {
+ $ERROR('#523: -1024 >> 16 === -1. Actual: ' + (-1024 >> 16));
+}
+
+
+if (-2048 >> 16 !== -1) {
+ $ERROR('#524: -2048 >> 16 === -1. Actual: ' + (-2048 >> 16));
+}
+
+
+if (-4096 >> 16 !== -1) {
+ $ERROR('#525: -4096 >> 16 === -1. Actual: ' + (-4096 >> 16));
+}
+
+
+if (-8192 >> 16 !== -1) {
+ $ERROR('#526: -8192 >> 16 === -1. Actual: ' + (-8192 >> 16));
+}
+
+
+if (-16384 >> 16 !== -1) {
+ $ERROR('#527: -16384 >> 16 === -1. Actual: ' + (-16384 >> 16));
+}
+
+
+if (-32768 >> 16 !== -1) {
+ $ERROR('#528: -32768 >> 16 === -1. Actual: ' + (-32768 >> 16));
+}
+
+
+if (-65536 >> 16 !== -1) {
+ $ERROR('#529: -65536 >> 16 === -1. Actual: ' + (-65536 >> 16));
+}
+
+
+if (-131072 >> 16 !== -2) {
+ $ERROR('#530: -131072 >> 16 === -2. Actual: ' + (-131072 >> 16));
+}
+
+
+if (-262144 >> 16 !== -4) {
+ $ERROR('#531: -262144 >> 16 === -4. Actual: ' + (-262144 >> 16));
+}
+
+
+if (-524288 >> 16 !== -8) {
+ $ERROR('#532: -524288 >> 16 === -8. Actual: ' + (-524288 >> 16));
+}
+
+
+if (-1048576 >> 16 !== -16) {
+ $ERROR('#533: -1048576 >> 16 === -16. Actual: ' + (-1048576 >> 16));
+}
+
+
+if (-2097152 >> 16 !== -32) {
+ $ERROR('#534: -2097152 >> 16 === -32. Actual: ' + (-2097152 >> 16));
+}
+
+
+if (-4194304 >> 16 !== -64) {
+ $ERROR('#535: -4194304 >> 16 === -64. Actual: ' + (-4194304 >> 16));
+}
+
+
+if (-8388608 >> 16 !== -128) {
+ $ERROR('#536: -8388608 >> 16 === -128. Actual: ' + (-8388608 >> 16));
+}
+
+
+if (-16777216 >> 16 !== -256) {
+ $ERROR('#537: -16777216 >> 16 === -256. Actual: ' + (-16777216 >> 16));
+}
+
+
+if (-33554432 >> 16 !== -512) {
+ $ERROR('#538: -33554432 >> 16 === -512. Actual: ' + (-33554432 >> 16));
+}
+
+
+if (-67108864 >> 16 !== -1024) {
+ $ERROR('#539: -67108864 >> 16 === -1024. Actual: ' + (-67108864 >> 16));
+}
+
+
+if (-134217728 >> 16 !== -2048) {
+ $ERROR('#540: -134217728 >> 16 === -2048. Actual: ' + (-134217728 >> 16));
+}
+
+
+if (-268435456 >> 16 !== -4096) {
+ $ERROR('#541: -268435456 >> 16 === -4096. Actual: ' + (-268435456 >> 16));
+}
+
+
+if (-536870912 >> 16 !== -8192) {
+ $ERROR('#542: -536870912 >> 16 === -8192. Actual: ' + (-536870912 >> 16));
+}
+
+
+if (-1073741824 >> 16 !== -16384) {
+ $ERROR('#543: -1073741824 >> 16 === -16384. Actual: ' + (-1073741824 >> 16));
+}
+
+
+if (-2147483648 >> 16 !== -32768) {
+ $ERROR('#544: -2147483648 >> 16 === -32768. Actual: ' + (-2147483648 >> 16));
+}
+
+
+if (-1 >> 17 !== -1) {
+ $ERROR('#545: -1 >> 17 === -1. Actual: ' + (-1 >> 17));
+}
+
+
+if (-2 >> 17 !== -1) {
+ $ERROR('#546: -2 >> 17 === -1. Actual: ' + (-2 >> 17));
+}
+
+
+if (-4 >> 17 !== -1) {
+ $ERROR('#547: -4 >> 17 === -1. Actual: ' + (-4 >> 17));
+}
+
+
+if (-8 >> 17 !== -1) {
+ $ERROR('#548: -8 >> 17 === -1. Actual: ' + (-8 >> 17));
+}
+
+
+if (-16 >> 17 !== -1) {
+ $ERROR('#549: -16 >> 17 === -1. Actual: ' + (-16 >> 17));
+}
+
+
+if (-32 >> 17 !== -1) {
+ $ERROR('#550: -32 >> 17 === -1. Actual: ' + (-32 >> 17));
+}
+
+
+if (-64 >> 17 !== -1) {
+ $ERROR('#551: -64 >> 17 === -1. Actual: ' + (-64 >> 17));
+}
+
+
+if (-128 >> 17 !== -1) {
+ $ERROR('#552: -128 >> 17 === -1. Actual: ' + (-128 >> 17));
+}
+
+
+if (-256 >> 17 !== -1) {
+ $ERROR('#553: -256 >> 17 === -1. Actual: ' + (-256 >> 17));
+}
+
+
+if (-512 >> 17 !== -1) {
+ $ERROR('#554: -512 >> 17 === -1. Actual: ' + (-512 >> 17));
+}
+
+
+if (-1024 >> 17 !== -1) {
+ $ERROR('#555: -1024 >> 17 === -1. Actual: ' + (-1024 >> 17));
+}
+
+
+if (-2048 >> 17 !== -1) {
+ $ERROR('#556: -2048 >> 17 === -1. Actual: ' + (-2048 >> 17));
+}
+
+
+if (-4096 >> 17 !== -1) {
+ $ERROR('#557: -4096 >> 17 === -1. Actual: ' + (-4096 >> 17));
+}
+
+
+if (-8192 >> 17 !== -1) {
+ $ERROR('#558: -8192 >> 17 === -1. Actual: ' + (-8192 >> 17));
+}
+
+
+if (-16384 >> 17 !== -1) {
+ $ERROR('#559: -16384 >> 17 === -1. Actual: ' + (-16384 >> 17));
+}
+
+
+if (-32768 >> 17 !== -1) {
+ $ERROR('#560: -32768 >> 17 === -1. Actual: ' + (-32768 >> 17));
+}
+
+
+if (-65536 >> 17 !== -1) {
+ $ERROR('#561: -65536 >> 17 === -1. Actual: ' + (-65536 >> 17));
+}
+
+
+if (-131072 >> 17 !== -1) {
+ $ERROR('#562: -131072 >> 17 === -1. Actual: ' + (-131072 >> 17));
+}
+
+
+if (-262144 >> 17 !== -2) {
+ $ERROR('#563: -262144 >> 17 === -2. Actual: ' + (-262144 >> 17));
+}
+
+
+if (-524288 >> 17 !== -4) {
+ $ERROR('#564: -524288 >> 17 === -4. Actual: ' + (-524288 >> 17));
+}
+
+
+if (-1048576 >> 17 !== -8) {
+ $ERROR('#565: -1048576 >> 17 === -8. Actual: ' + (-1048576 >> 17));
+}
+
+
+if (-2097152 >> 17 !== -16) {
+ $ERROR('#566: -2097152 >> 17 === -16. Actual: ' + (-2097152 >> 17));
+}
+
+
+if (-4194304 >> 17 !== -32) {
+ $ERROR('#567: -4194304 >> 17 === -32. Actual: ' + (-4194304 >> 17));
+}
+
+
+if (-8388608 >> 17 !== -64) {
+ $ERROR('#568: -8388608 >> 17 === -64. Actual: ' + (-8388608 >> 17));
+}
+
+
+if (-16777216 >> 17 !== -128) {
+ $ERROR('#569: -16777216 >> 17 === -128. Actual: ' + (-16777216 >> 17));
+}
+
+
+if (-33554432 >> 17 !== -256) {
+ $ERROR('#570: -33554432 >> 17 === -256. Actual: ' + (-33554432 >> 17));
+}
+
+
+if (-67108864 >> 17 !== -512) {
+ $ERROR('#571: -67108864 >> 17 === -512. Actual: ' + (-67108864 >> 17));
+}
+
+
+if (-134217728 >> 17 !== -1024) {
+ $ERROR('#572: -134217728 >> 17 === -1024. Actual: ' + (-134217728 >> 17));
+}
+
+
+if (-268435456 >> 17 !== -2048) {
+ $ERROR('#573: -268435456 >> 17 === -2048. Actual: ' + (-268435456 >> 17));
+}
+
+
+if (-536870912 >> 17 !== -4096) {
+ $ERROR('#574: -536870912 >> 17 === -4096. Actual: ' + (-536870912 >> 17));
+}
+
+
+if (-1073741824 >> 17 !== -8192) {
+ $ERROR('#575: -1073741824 >> 17 === -8192. Actual: ' + (-1073741824 >> 17));
+}
+
+
+if (-2147483648 >> 17 !== -16384) {
+ $ERROR('#576: -2147483648 >> 17 === -16384. Actual: ' + (-2147483648 >> 17));
+}
+
+
+if (-1 >> 18 !== -1) {
+ $ERROR('#577: -1 >> 18 === -1. Actual: ' + (-1 >> 18));
+}
+
+
+if (-2 >> 18 !== -1) {
+ $ERROR('#578: -2 >> 18 === -1. Actual: ' + (-2 >> 18));
+}
+
+
+if (-4 >> 18 !== -1) {
+ $ERROR('#579: -4 >> 18 === -1. Actual: ' + (-4 >> 18));
+}
+
+
+if (-8 >> 18 !== -1) {
+ $ERROR('#580: -8 >> 18 === -1. Actual: ' + (-8 >> 18));
+}
+
+
+if (-16 >> 18 !== -1) {
+ $ERROR('#581: -16 >> 18 === -1. Actual: ' + (-16 >> 18));
+}
+
+
+if (-32 >> 18 !== -1) {
+ $ERROR('#582: -32 >> 18 === -1. Actual: ' + (-32 >> 18));
+}
+
+
+if (-64 >> 18 !== -1) {
+ $ERROR('#583: -64 >> 18 === -1. Actual: ' + (-64 >> 18));
+}
+
+
+if (-128 >> 18 !== -1) {
+ $ERROR('#584: -128 >> 18 === -1. Actual: ' + (-128 >> 18));
+}
+
+
+if (-256 >> 18 !== -1) {
+ $ERROR('#585: -256 >> 18 === -1. Actual: ' + (-256 >> 18));
+}
+
+
+if (-512 >> 18 !== -1) {
+ $ERROR('#586: -512 >> 18 === -1. Actual: ' + (-512 >> 18));
+}
+
+
+if (-1024 >> 18 !== -1) {
+ $ERROR('#587: -1024 >> 18 === -1. Actual: ' + (-1024 >> 18));
+}
+
+
+if (-2048 >> 18 !== -1) {
+ $ERROR('#588: -2048 >> 18 === -1. Actual: ' + (-2048 >> 18));
+}
+
+
+if (-4096 >> 18 !== -1) {
+ $ERROR('#589: -4096 >> 18 === -1. Actual: ' + (-4096 >> 18));
+}
+
+
+if (-8192 >> 18 !== -1) {
+ $ERROR('#590: -8192 >> 18 === -1. Actual: ' + (-8192 >> 18));
+}
+
+
+if (-16384 >> 18 !== -1) {
+ $ERROR('#591: -16384 >> 18 === -1. Actual: ' + (-16384 >> 18));
+}
+
+
+if (-32768 >> 18 !== -1) {
+ $ERROR('#592: -32768 >> 18 === -1. Actual: ' + (-32768 >> 18));
+}
+
+
+if (-65536 >> 18 !== -1) {
+ $ERROR('#593: -65536 >> 18 === -1. Actual: ' + (-65536 >> 18));
+}
+
+
+if (-131072 >> 18 !== -1) {
+ $ERROR('#594: -131072 >> 18 === -1. Actual: ' + (-131072 >> 18));
+}
+
+
+if (-262144 >> 18 !== -1) {
+ $ERROR('#595: -262144 >> 18 === -1. Actual: ' + (-262144 >> 18));
+}
+
+
+if (-524288 >> 18 !== -2) {
+ $ERROR('#596: -524288 >> 18 === -2. Actual: ' + (-524288 >> 18));
+}
+
+
+if (-1048576 >> 18 !== -4) {
+ $ERROR('#597: -1048576 >> 18 === -4. Actual: ' + (-1048576 >> 18));
+}
+
+
+if (-2097152 >> 18 !== -8) {
+ $ERROR('#598: -2097152 >> 18 === -8. Actual: ' + (-2097152 >> 18));
+}
+
+
+if (-4194304 >> 18 !== -16) {
+ $ERROR('#599: -4194304 >> 18 === -16. Actual: ' + (-4194304 >> 18));
+}
+
+
+if (-8388608 >> 18 !== -32) {
+ $ERROR('#600: -8388608 >> 18 === -32. Actual: ' + (-8388608 >> 18));
+}
+
+
+if (-16777216 >> 18 !== -64) {
+ $ERROR('#601: -16777216 >> 18 === -64. Actual: ' + (-16777216 >> 18));
+}
+
+
+if (-33554432 >> 18 !== -128) {
+ $ERROR('#602: -33554432 >> 18 === -128. Actual: ' + (-33554432 >> 18));
+}
+
+
+if (-67108864 >> 18 !== -256) {
+ $ERROR('#603: -67108864 >> 18 === -256. Actual: ' + (-67108864 >> 18));
+}
+
+
+if (-134217728 >> 18 !== -512) {
+ $ERROR('#604: -134217728 >> 18 === -512. Actual: ' + (-134217728 >> 18));
+}
+
+
+if (-268435456 >> 18 !== -1024) {
+ $ERROR('#605: -268435456 >> 18 === -1024. Actual: ' + (-268435456 >> 18));
+}
+
+
+if (-536870912 >> 18 !== -2048) {
+ $ERROR('#606: -536870912 >> 18 === -2048. Actual: ' + (-536870912 >> 18));
+}
+
+
+if (-1073741824 >> 18 !== -4096) {
+ $ERROR('#607: -1073741824 >> 18 === -4096. Actual: ' + (-1073741824 >> 18));
+}
+
+
+if (-2147483648 >> 18 !== -8192) {
+ $ERROR('#608: -2147483648 >> 18 === -8192. Actual: ' + (-2147483648 >> 18));
+}
+
+
+if (-1 >> 19 !== -1) {
+ $ERROR('#609: -1 >> 19 === -1. Actual: ' + (-1 >> 19));
+}
+
+
+if (-2 >> 19 !== -1) {
+ $ERROR('#610: -2 >> 19 === -1. Actual: ' + (-2 >> 19));
+}
+
+
+if (-4 >> 19 !== -1) {
+ $ERROR('#611: -4 >> 19 === -1. Actual: ' + (-4 >> 19));
+}
+
+
+if (-8 >> 19 !== -1) {
+ $ERROR('#612: -8 >> 19 === -1. Actual: ' + (-8 >> 19));
+}
+
+
+if (-16 >> 19 !== -1) {
+ $ERROR('#613: -16 >> 19 === -1. Actual: ' + (-16 >> 19));
+}
+
+
+if (-32 >> 19 !== -1) {
+ $ERROR('#614: -32 >> 19 === -1. Actual: ' + (-32 >> 19));
+}
+
+
+if (-64 >> 19 !== -1) {
+ $ERROR('#615: -64 >> 19 === -1. Actual: ' + (-64 >> 19));
+}
+
+
+if (-128 >> 19 !== -1) {
+ $ERROR('#616: -128 >> 19 === -1. Actual: ' + (-128 >> 19));
+}
+
+
+if (-256 >> 19 !== -1) {
+ $ERROR('#617: -256 >> 19 === -1. Actual: ' + (-256 >> 19));
+}
+
+
+if (-512 >> 19 !== -1) {
+ $ERROR('#618: -512 >> 19 === -1. Actual: ' + (-512 >> 19));
+}
+
+
+if (-1024 >> 19 !== -1) {
+ $ERROR('#619: -1024 >> 19 === -1. Actual: ' + (-1024 >> 19));
+}
+
+
+if (-2048 >> 19 !== -1) {
+ $ERROR('#620: -2048 >> 19 === -1. Actual: ' + (-2048 >> 19));
+}
+
+
+if (-4096 >> 19 !== -1) {
+ $ERROR('#621: -4096 >> 19 === -1. Actual: ' + (-4096 >> 19));
+}
+
+
+if (-8192 >> 19 !== -1) {
+ $ERROR('#622: -8192 >> 19 === -1. Actual: ' + (-8192 >> 19));
+}
+
+
+if (-16384 >> 19 !== -1) {
+ $ERROR('#623: -16384 >> 19 === -1. Actual: ' + (-16384 >> 19));
+}
+
+
+if (-32768 >> 19 !== -1) {
+ $ERROR('#624: -32768 >> 19 === -1. Actual: ' + (-32768 >> 19));
+}
+
+
+if (-65536 >> 19 !== -1) {
+ $ERROR('#625: -65536 >> 19 === -1. Actual: ' + (-65536 >> 19));
+}
+
+
+if (-131072 >> 19 !== -1) {
+ $ERROR('#626: -131072 >> 19 === -1. Actual: ' + (-131072 >> 19));
+}
+
+
+if (-262144 >> 19 !== -1) {
+ $ERROR('#627: -262144 >> 19 === -1. Actual: ' + (-262144 >> 19));
+}
+
+
+if (-524288 >> 19 !== -1) {
+ $ERROR('#628: -524288 >> 19 === -1. Actual: ' + (-524288 >> 19));
+}
+
+
+if (-1048576 >> 19 !== -2) {
+ $ERROR('#629: -1048576 >> 19 === -2. Actual: ' + (-1048576 >> 19));
+}
+
+
+if (-2097152 >> 19 !== -4) {
+ $ERROR('#630: -2097152 >> 19 === -4. Actual: ' + (-2097152 >> 19));
+}
+
+
+if (-4194304 >> 19 !== -8) {
+ $ERROR('#631: -4194304 >> 19 === -8. Actual: ' + (-4194304 >> 19));
+}
+
+
+if (-8388608 >> 19 !== -16) {
+ $ERROR('#632: -8388608 >> 19 === -16. Actual: ' + (-8388608 >> 19));
+}
+
+
+if (-16777216 >> 19 !== -32) {
+ $ERROR('#633: -16777216 >> 19 === -32. Actual: ' + (-16777216 >> 19));
+}
+
+
+if (-33554432 >> 19 !== -64) {
+ $ERROR('#634: -33554432 >> 19 === -64. Actual: ' + (-33554432 >> 19));
+}
+
+
+if (-67108864 >> 19 !== -128) {
+ $ERROR('#635: -67108864 >> 19 === -128. Actual: ' + (-67108864 >> 19));
+}
+
+
+if (-134217728 >> 19 !== -256) {
+ $ERROR('#636: -134217728 >> 19 === -256. Actual: ' + (-134217728 >> 19));
+}
+
+
+if (-268435456 >> 19 !== -512) {
+ $ERROR('#637: -268435456 >> 19 === -512. Actual: ' + (-268435456 >> 19));
+}
+
+
+if (-536870912 >> 19 !== -1024) {
+ $ERROR('#638: -536870912 >> 19 === -1024. Actual: ' + (-536870912 >> 19));
+}
+
+
+if (-1073741824 >> 19 !== -2048) {
+ $ERROR('#639: -1073741824 >> 19 === -2048. Actual: ' + (-1073741824 >> 19));
+}
+
+
+if (-2147483648 >> 19 !== -4096) {
+ $ERROR('#640: -2147483648 >> 19 === -4096. Actual: ' + (-2147483648 >> 19));
+}
+
+
+if (-1 >> 20 !== -1) {
+ $ERROR('#641: -1 >> 20 === -1. Actual: ' + (-1 >> 20));
+}
+
+
+if (-2 >> 20 !== -1) {
+ $ERROR('#642: -2 >> 20 === -1. Actual: ' + (-2 >> 20));
+}
+
+
+if (-4 >> 20 !== -1) {
+ $ERROR('#643: -4 >> 20 === -1. Actual: ' + (-4 >> 20));
+}
+
+
+if (-8 >> 20 !== -1) {
+ $ERROR('#644: -8 >> 20 === -1. Actual: ' + (-8 >> 20));
+}
+
+
+if (-16 >> 20 !== -1) {
+ $ERROR('#645: -16 >> 20 === -1. Actual: ' + (-16 >> 20));
+}
+
+
+if (-32 >> 20 !== -1) {
+ $ERROR('#646: -32 >> 20 === -1. Actual: ' + (-32 >> 20));
+}
+
+
+if (-64 >> 20 !== -1) {
+ $ERROR('#647: -64 >> 20 === -1. Actual: ' + (-64 >> 20));
+}
+
+
+if (-128 >> 20 !== -1) {
+ $ERROR('#648: -128 >> 20 === -1. Actual: ' + (-128 >> 20));
+}
+
+
+if (-256 >> 20 !== -1) {
+ $ERROR('#649: -256 >> 20 === -1. Actual: ' + (-256 >> 20));
+}
+
+
+if (-512 >> 20 !== -1) {
+ $ERROR('#650: -512 >> 20 === -1. Actual: ' + (-512 >> 20));
+}
+
+
+if (-1024 >> 20 !== -1) {
+ $ERROR('#651: -1024 >> 20 === -1. Actual: ' + (-1024 >> 20));
+}
+
+
+if (-2048 >> 20 !== -1) {
+ $ERROR('#652: -2048 >> 20 === -1. Actual: ' + (-2048 >> 20));
+}
+
+
+if (-4096 >> 20 !== -1) {
+ $ERROR('#653: -4096 >> 20 === -1. Actual: ' + (-4096 >> 20));
+}
+
+
+if (-8192 >> 20 !== -1) {
+ $ERROR('#654: -8192 >> 20 === -1. Actual: ' + (-8192 >> 20));
+}
+
+
+if (-16384 >> 20 !== -1) {
+ $ERROR('#655: -16384 >> 20 === -1. Actual: ' + (-16384 >> 20));
+}
+
+
+if (-32768 >> 20 !== -1) {
+ $ERROR('#656: -32768 >> 20 === -1. Actual: ' + (-32768 >> 20));
+}
+
+
+if (-65536 >> 20 !== -1) {
+ $ERROR('#657: -65536 >> 20 === -1. Actual: ' + (-65536 >> 20));
+}
+
+
+if (-131072 >> 20 !== -1) {
+ $ERROR('#658: -131072 >> 20 === -1. Actual: ' + (-131072 >> 20));
+}
+
+
+if (-262144 >> 20 !== -1) {
+ $ERROR('#659: -262144 >> 20 === -1. Actual: ' + (-262144 >> 20));
+}
+
+
+if (-524288 >> 20 !== -1) {
+ $ERROR('#660: -524288 >> 20 === -1. Actual: ' + (-524288 >> 20));
+}
+
+
+if (-1048576 >> 20 !== -1) {
+ $ERROR('#661: -1048576 >> 20 === -1. Actual: ' + (-1048576 >> 20));
+}
+
+
+if (-2097152 >> 20 !== -2) {
+ $ERROR('#662: -2097152 >> 20 === -2. Actual: ' + (-2097152 >> 20));
+}
+
+
+if (-4194304 >> 20 !== -4) {
+ $ERROR('#663: -4194304 >> 20 === -4. Actual: ' + (-4194304 >> 20));
+}
+
+
+if (-8388608 >> 20 !== -8) {
+ $ERROR('#664: -8388608 >> 20 === -8. Actual: ' + (-8388608 >> 20));
+}
+
+
+if (-16777216 >> 20 !== -16) {
+ $ERROR('#665: -16777216 >> 20 === -16. Actual: ' + (-16777216 >> 20));
+}
+
+
+if (-33554432 >> 20 !== -32) {
+ $ERROR('#666: -33554432 >> 20 === -32. Actual: ' + (-33554432 >> 20));
+}
+
+
+if (-67108864 >> 20 !== -64) {
+ $ERROR('#667: -67108864 >> 20 === -64. Actual: ' + (-67108864 >> 20));
+}
+
+
+if (-134217728 >> 20 !== -128) {
+ $ERROR('#668: -134217728 >> 20 === -128. Actual: ' + (-134217728 >> 20));
+}
+
+
+if (-268435456 >> 20 !== -256) {
+ $ERROR('#669: -268435456 >> 20 === -256. Actual: ' + (-268435456 >> 20));
+}
+
+
+if (-536870912 >> 20 !== -512) {
+ $ERROR('#670: -536870912 >> 20 === -512. Actual: ' + (-536870912 >> 20));
+}
+
+
+if (-1073741824 >> 20 !== -1024) {
+ $ERROR('#671: -1073741824 >> 20 === -1024. Actual: ' + (-1073741824 >> 20));
+}
+
+
+if (-2147483648 >> 20 !== -2048) {
+ $ERROR('#672: -2147483648 >> 20 === -2048. Actual: ' + (-2147483648 >> 20));
+}
+
+
+if (-1 >> 21 !== -1) {
+ $ERROR('#673: -1 >> 21 === -1. Actual: ' + (-1 >> 21));
+}
+
+
+if (-2 >> 21 !== -1) {
+ $ERROR('#674: -2 >> 21 === -1. Actual: ' + (-2 >> 21));
+}
+
+
+if (-4 >> 21 !== -1) {
+ $ERROR('#675: -4 >> 21 === -1. Actual: ' + (-4 >> 21));
+}
+
+
+if (-8 >> 21 !== -1) {
+ $ERROR('#676: -8 >> 21 === -1. Actual: ' + (-8 >> 21));
+}
+
+
+if (-16 >> 21 !== -1) {
+ $ERROR('#677: -16 >> 21 === -1. Actual: ' + (-16 >> 21));
+}
+
+
+if (-32 >> 21 !== -1) {
+ $ERROR('#678: -32 >> 21 === -1. Actual: ' + (-32 >> 21));
+}
+
+
+if (-64 >> 21 !== -1) {
+ $ERROR('#679: -64 >> 21 === -1. Actual: ' + (-64 >> 21));
+}
+
+
+if (-128 >> 21 !== -1) {
+ $ERROR('#680: -128 >> 21 === -1. Actual: ' + (-128 >> 21));
+}
+
+
+if (-256 >> 21 !== -1) {
+ $ERROR('#681: -256 >> 21 === -1. Actual: ' + (-256 >> 21));
+}
+
+
+if (-512 >> 21 !== -1) {
+ $ERROR('#682: -512 >> 21 === -1. Actual: ' + (-512 >> 21));
+}
+
+
+if (-1024 >> 21 !== -1) {
+ $ERROR('#683: -1024 >> 21 === -1. Actual: ' + (-1024 >> 21));
+}
+
+
+if (-2048 >> 21 !== -1) {
+ $ERROR('#684: -2048 >> 21 === -1. Actual: ' + (-2048 >> 21));
+}
+
+
+if (-4096 >> 21 !== -1) {
+ $ERROR('#685: -4096 >> 21 === -1. Actual: ' + (-4096 >> 21));
+}
+
+
+if (-8192 >> 21 !== -1) {
+ $ERROR('#686: -8192 >> 21 === -1. Actual: ' + (-8192 >> 21));
+}
+
+
+if (-16384 >> 21 !== -1) {
+ $ERROR('#687: -16384 >> 21 === -1. Actual: ' + (-16384 >> 21));
+}
+
+
+if (-32768 >> 21 !== -1) {
+ $ERROR('#688: -32768 >> 21 === -1. Actual: ' + (-32768 >> 21));
+}
+
+
+if (-65536 >> 21 !== -1) {
+ $ERROR('#689: -65536 >> 21 === -1. Actual: ' + (-65536 >> 21));
+}
+
+
+if (-131072 >> 21 !== -1) {
+ $ERROR('#690: -131072 >> 21 === -1. Actual: ' + (-131072 >> 21));
+}
+
+
+if (-262144 >> 21 !== -1) {
+ $ERROR('#691: -262144 >> 21 === -1. Actual: ' + (-262144 >> 21));
+}
+
+
+if (-524288 >> 21 !== -1) {
+ $ERROR('#692: -524288 >> 21 === -1. Actual: ' + (-524288 >> 21));
+}
+
+
+if (-1048576 >> 21 !== -1) {
+ $ERROR('#693: -1048576 >> 21 === -1. Actual: ' + (-1048576 >> 21));
+}
+
+
+if (-2097152 >> 21 !== -1) {
+ $ERROR('#694: -2097152 >> 21 === -1. Actual: ' + (-2097152 >> 21));
+}
+
+
+if (-4194304 >> 21 !== -2) {
+ $ERROR('#695: -4194304 >> 21 === -2. Actual: ' + (-4194304 >> 21));
+}
+
+
+if (-8388608 >> 21 !== -4) {
+ $ERROR('#696: -8388608 >> 21 === -4. Actual: ' + (-8388608 >> 21));
+}
+
+
+if (-16777216 >> 21 !== -8) {
+ $ERROR('#697: -16777216 >> 21 === -8. Actual: ' + (-16777216 >> 21));
+}
+
+
+if (-33554432 >> 21 !== -16) {
+ $ERROR('#698: -33554432 >> 21 === -16. Actual: ' + (-33554432 >> 21));
+}
+
+
+if (-67108864 >> 21 !== -32) {
+ $ERROR('#699: -67108864 >> 21 === -32. Actual: ' + (-67108864 >> 21));
+}
+
+
+if (-134217728 >> 21 !== -64) {
+ $ERROR('#700: -134217728 >> 21 === -64. Actual: ' + (-134217728 >> 21));
+}
+
+
+if (-268435456 >> 21 !== -128) {
+ $ERROR('#701: -268435456 >> 21 === -128. Actual: ' + (-268435456 >> 21));
+}
+
+
+if (-536870912 >> 21 !== -256) {
+ $ERROR('#702: -536870912 >> 21 === -256. Actual: ' + (-536870912 >> 21));
+}
+
+
+if (-1073741824 >> 21 !== -512) {
+ $ERROR('#703: -1073741824 >> 21 === -512. Actual: ' + (-1073741824 >> 21));
+}
+
+
+if (-2147483648 >> 21 !== -1024) {
+ $ERROR('#704: -2147483648 >> 21 === -1024. Actual: ' + (-2147483648 >> 21));
+}
+
+
+if (-1 >> 22 !== -1) {
+ $ERROR('#705: -1 >> 22 === -1. Actual: ' + (-1 >> 22));
+}
+
+
+if (-2 >> 22 !== -1) {
+ $ERROR('#706: -2 >> 22 === -1. Actual: ' + (-2 >> 22));
+}
+
+
+if (-4 >> 22 !== -1) {
+ $ERROR('#707: -4 >> 22 === -1. Actual: ' + (-4 >> 22));
+}
+
+
+if (-8 >> 22 !== -1) {
+ $ERROR('#708: -8 >> 22 === -1. Actual: ' + (-8 >> 22));
+}
+
+
+if (-16 >> 22 !== -1) {
+ $ERROR('#709: -16 >> 22 === -1. Actual: ' + (-16 >> 22));
+}
+
+
+if (-32 >> 22 !== -1) {
+ $ERROR('#710: -32 >> 22 === -1. Actual: ' + (-32 >> 22));
+}
+
+
+if (-64 >> 22 !== -1) {
+ $ERROR('#711: -64 >> 22 === -1. Actual: ' + (-64 >> 22));
+}
+
+
+if (-128 >> 22 !== -1) {
+ $ERROR('#712: -128 >> 22 === -1. Actual: ' + (-128 >> 22));
+}
+
+
+if (-256 >> 22 !== -1) {
+ $ERROR('#713: -256 >> 22 === -1. Actual: ' + (-256 >> 22));
+}
+
+
+if (-512 >> 22 !== -1) {
+ $ERROR('#714: -512 >> 22 === -1. Actual: ' + (-512 >> 22));
+}
+
+
+if (-1024 >> 22 !== -1) {
+ $ERROR('#715: -1024 >> 22 === -1. Actual: ' + (-1024 >> 22));
+}
+
+
+if (-2048 >> 22 !== -1) {
+ $ERROR('#716: -2048 >> 22 === -1. Actual: ' + (-2048 >> 22));
+}
+
+
+if (-4096 >> 22 !== -1) {
+ $ERROR('#717: -4096 >> 22 === -1. Actual: ' + (-4096 >> 22));
+}
+
+
+if (-8192 >> 22 !== -1) {
+ $ERROR('#718: -8192 >> 22 === -1. Actual: ' + (-8192 >> 22));
+}
+
+
+if (-16384 >> 22 !== -1) {
+ $ERROR('#719: -16384 >> 22 === -1. Actual: ' + (-16384 >> 22));
+}
+
+
+if (-32768 >> 22 !== -1) {
+ $ERROR('#720: -32768 >> 22 === -1. Actual: ' + (-32768 >> 22));
+}
+
+
+if (-65536 >> 22 !== -1) {
+ $ERROR('#721: -65536 >> 22 === -1. Actual: ' + (-65536 >> 22));
+}
+
+
+if (-131072 >> 22 !== -1) {
+ $ERROR('#722: -131072 >> 22 === -1. Actual: ' + (-131072 >> 22));
+}
+
+
+if (-262144 >> 22 !== -1) {
+ $ERROR('#723: -262144 >> 22 === -1. Actual: ' + (-262144 >> 22));
+}
+
+
+if (-524288 >> 22 !== -1) {
+ $ERROR('#724: -524288 >> 22 === -1. Actual: ' + (-524288 >> 22));
+}
+
+
+if (-1048576 >> 22 !== -1) {
+ $ERROR('#725: -1048576 >> 22 === -1. Actual: ' + (-1048576 >> 22));
+}
+
+
+if (-2097152 >> 22 !== -1) {
+ $ERROR('#726: -2097152 >> 22 === -1. Actual: ' + (-2097152 >> 22));
+}
+
+
+if (-4194304 >> 22 !== -1) {
+ $ERROR('#727: -4194304 >> 22 === -1. Actual: ' + (-4194304 >> 22));
+}
+
+
+if (-8388608 >> 22 !== -2) {
+ $ERROR('#728: -8388608 >> 22 === -2. Actual: ' + (-8388608 >> 22));
+}
+
+
+if (-16777216 >> 22 !== -4) {
+ $ERROR('#729: -16777216 >> 22 === -4. Actual: ' + (-16777216 >> 22));
+}
+
+
+if (-33554432 >> 22 !== -8) {
+ $ERROR('#730: -33554432 >> 22 === -8. Actual: ' + (-33554432 >> 22));
+}
+
+
+if (-67108864 >> 22 !== -16) {
+ $ERROR('#731: -67108864 >> 22 === -16. Actual: ' + (-67108864 >> 22));
+}
+
+
+if (-134217728 >> 22 !== -32) {
+ $ERROR('#732: -134217728 >> 22 === -32. Actual: ' + (-134217728 >> 22));
+}
+
+
+if (-268435456 >> 22 !== -64) {
+ $ERROR('#733: -268435456 >> 22 === -64. Actual: ' + (-268435456 >> 22));
+}
+
+
+if (-536870912 >> 22 !== -128) {
+ $ERROR('#734: -536870912 >> 22 === -128. Actual: ' + (-536870912 >> 22));
+}
+
+
+if (-1073741824 >> 22 !== -256) {
+ $ERROR('#735: -1073741824 >> 22 === -256. Actual: ' + (-1073741824 >> 22));
+}
+
+
+if (-2147483648 >> 22 !== -512) {
+ $ERROR('#736: -2147483648 >> 22 === -512. Actual: ' + (-2147483648 >> 22));
+}
+
+
+if (-1 >> 23 !== -1) {
+ $ERROR('#737: -1 >> 23 === -1. Actual: ' + (-1 >> 23));
+}
+
+
+if (-2 >> 23 !== -1) {
+ $ERROR('#738: -2 >> 23 === -1. Actual: ' + (-2 >> 23));
+}
+
+
+if (-4 >> 23 !== -1) {
+ $ERROR('#739: -4 >> 23 === -1. Actual: ' + (-4 >> 23));
+}
+
+
+if (-8 >> 23 !== -1) {
+ $ERROR('#740: -8 >> 23 === -1. Actual: ' + (-8 >> 23));
+}
+
+
+if (-16 >> 23 !== -1) {
+ $ERROR('#741: -16 >> 23 === -1. Actual: ' + (-16 >> 23));
+}
+
+
+if (-32 >> 23 !== -1) {
+ $ERROR('#742: -32 >> 23 === -1. Actual: ' + (-32 >> 23));
+}
+
+
+if (-64 >> 23 !== -1) {
+ $ERROR('#743: -64 >> 23 === -1. Actual: ' + (-64 >> 23));
+}
+
+
+if (-128 >> 23 !== -1) {
+ $ERROR('#744: -128 >> 23 === -1. Actual: ' + (-128 >> 23));
+}
+
+
+if (-256 >> 23 !== -1) {
+ $ERROR('#745: -256 >> 23 === -1. Actual: ' + (-256 >> 23));
+}
+
+
+if (-512 >> 23 !== -1) {
+ $ERROR('#746: -512 >> 23 === -1. Actual: ' + (-512 >> 23));
+}
+
+
+if (-1024 >> 23 !== -1) {
+ $ERROR('#747: -1024 >> 23 === -1. Actual: ' + (-1024 >> 23));
+}
+
+
+if (-2048 >> 23 !== -1) {
+ $ERROR('#748: -2048 >> 23 === -1. Actual: ' + (-2048 >> 23));
+}
+
+
+if (-4096 >> 23 !== -1) {
+ $ERROR('#749: -4096 >> 23 === -1. Actual: ' + (-4096 >> 23));
+}
+
+
+if (-8192 >> 23 !== -1) {
+ $ERROR('#750: -8192 >> 23 === -1. Actual: ' + (-8192 >> 23));
+}
+
+
+if (-16384 >> 23 !== -1) {
+ $ERROR('#751: -16384 >> 23 === -1. Actual: ' + (-16384 >> 23));
+}
+
+
+if (-32768 >> 23 !== -1) {
+ $ERROR('#752: -32768 >> 23 === -1. Actual: ' + (-32768 >> 23));
+}
+
+
+if (-65536 >> 23 !== -1) {
+ $ERROR('#753: -65536 >> 23 === -1. Actual: ' + (-65536 >> 23));
+}
+
+
+if (-131072 >> 23 !== -1) {
+ $ERROR('#754: -131072 >> 23 === -1. Actual: ' + (-131072 >> 23));
+}
+
+
+if (-262144 >> 23 !== -1) {
+ $ERROR('#755: -262144 >> 23 === -1. Actual: ' + (-262144 >> 23));
+}
+
+
+if (-524288 >> 23 !== -1) {
+ $ERROR('#756: -524288 >> 23 === -1. Actual: ' + (-524288 >> 23));
+}
+
+
+if (-1048576 >> 23 !== -1) {
+ $ERROR('#757: -1048576 >> 23 === -1. Actual: ' + (-1048576 >> 23));
+}
+
+
+if (-2097152 >> 23 !== -1) {
+ $ERROR('#758: -2097152 >> 23 === -1. Actual: ' + (-2097152 >> 23));
+}
+
+
+if (-4194304 >> 23 !== -1) {
+ $ERROR('#759: -4194304 >> 23 === -1. Actual: ' + (-4194304 >> 23));
+}
+
+
+if (-8388608 >> 23 !== -1) {
+ $ERROR('#760: -8388608 >> 23 === -1. Actual: ' + (-8388608 >> 23));
+}
+
+
+if (-16777216 >> 23 !== -2) {
+ $ERROR('#761: -16777216 >> 23 === -2. Actual: ' + (-16777216 >> 23));
+}
+
+
+if (-33554432 >> 23 !== -4) {
+ $ERROR('#762: -33554432 >> 23 === -4. Actual: ' + (-33554432 >> 23));
+}
+
+
+if (-67108864 >> 23 !== -8) {
+ $ERROR('#763: -67108864 >> 23 === -8. Actual: ' + (-67108864 >> 23));
+}
+
+
+if (-134217728 >> 23 !== -16) {
+ $ERROR('#764: -134217728 >> 23 === -16. Actual: ' + (-134217728 >> 23));
+}
+
+
+if (-268435456 >> 23 !== -32) {
+ $ERROR('#765: -268435456 >> 23 === -32. Actual: ' + (-268435456 >> 23));
+}
+
+
+if (-536870912 >> 23 !== -64) {
+ $ERROR('#766: -536870912 >> 23 === -64. Actual: ' + (-536870912 >> 23));
+}
+
+
+if (-1073741824 >> 23 !== -128) {
+ $ERROR('#767: -1073741824 >> 23 === -128. Actual: ' + (-1073741824 >> 23));
+}
+
+
+if (-2147483648 >> 23 !== -256) {
+ $ERROR('#768: -2147483648 >> 23 === -256. Actual: ' + (-2147483648 >> 23));
+}
+
+
+if (-1 >> 24 !== -1) {
+ $ERROR('#769: -1 >> 24 === -1. Actual: ' + (-1 >> 24));
+}
+
+
+if (-2 >> 24 !== -1) {
+ $ERROR('#770: -2 >> 24 === -1. Actual: ' + (-2 >> 24));
+}
+
+
+if (-4 >> 24 !== -1) {
+ $ERROR('#771: -4 >> 24 === -1. Actual: ' + (-4 >> 24));
+}
+
+
+if (-8 >> 24 !== -1) {
+ $ERROR('#772: -8 >> 24 === -1. Actual: ' + (-8 >> 24));
+}
+
+
+if (-16 >> 24 !== -1) {
+ $ERROR('#773: -16 >> 24 === -1. Actual: ' + (-16 >> 24));
+}
+
+
+if (-32 >> 24 !== -1) {
+ $ERROR('#774: -32 >> 24 === -1. Actual: ' + (-32 >> 24));
+}
+
+
+if (-64 >> 24 !== -1) {
+ $ERROR('#775: -64 >> 24 === -1. Actual: ' + (-64 >> 24));
+}
+
+
+if (-128 >> 24 !== -1) {
+ $ERROR('#776: -128 >> 24 === -1. Actual: ' + (-128 >> 24));
+}
+
+
+if (-256 >> 24 !== -1) {
+ $ERROR('#777: -256 >> 24 === -1. Actual: ' + (-256 >> 24));
+}
+
+
+if (-512 >> 24 !== -1) {
+ $ERROR('#778: -512 >> 24 === -1. Actual: ' + (-512 >> 24));
+}
+
+
+if (-1024 >> 24 !== -1) {
+ $ERROR('#779: -1024 >> 24 === -1. Actual: ' + (-1024 >> 24));
+}
+
+
+if (-2048 >> 24 !== -1) {
+ $ERROR('#780: -2048 >> 24 === -1. Actual: ' + (-2048 >> 24));
+}
+
+
+if (-4096 >> 24 !== -1) {
+ $ERROR('#781: -4096 >> 24 === -1. Actual: ' + (-4096 >> 24));
+}
+
+
+if (-8192 >> 24 !== -1) {
+ $ERROR('#782: -8192 >> 24 === -1. Actual: ' + (-8192 >> 24));
+}
+
+
+if (-16384 >> 24 !== -1) {
+ $ERROR('#783: -16384 >> 24 === -1. Actual: ' + (-16384 >> 24));
+}
+
+
+if (-32768 >> 24 !== -1) {
+ $ERROR('#784: -32768 >> 24 === -1. Actual: ' + (-32768 >> 24));
+}
+
+
+if (-65536 >> 24 !== -1) {
+ $ERROR('#785: -65536 >> 24 === -1. Actual: ' + (-65536 >> 24));
+}
+
+
+if (-131072 >> 24 !== -1) {
+ $ERROR('#786: -131072 >> 24 === -1. Actual: ' + (-131072 >> 24));
+}
+
+
+if (-262144 >> 24 !== -1) {
+ $ERROR('#787: -262144 >> 24 === -1. Actual: ' + (-262144 >> 24));
+}
+
+
+if (-524288 >> 24 !== -1) {
+ $ERROR('#788: -524288 >> 24 === -1. Actual: ' + (-524288 >> 24));
+}
+
+
+if (-1048576 >> 24 !== -1) {
+ $ERROR('#789: -1048576 >> 24 === -1. Actual: ' + (-1048576 >> 24));
+}
+
+
+if (-2097152 >> 24 !== -1) {
+ $ERROR('#790: -2097152 >> 24 === -1. Actual: ' + (-2097152 >> 24));
+}
+
+
+if (-4194304 >> 24 !== -1) {
+ $ERROR('#791: -4194304 >> 24 === -1. Actual: ' + (-4194304 >> 24));
+}
+
+
+if (-8388608 >> 24 !== -1) {
+ $ERROR('#792: -8388608 >> 24 === -1. Actual: ' + (-8388608 >> 24));
+}
+
+
+if (-16777216 >> 24 !== -1) {
+ $ERROR('#793: -16777216 >> 24 === -1. Actual: ' + (-16777216 >> 24));
+}
+
+
+if (-33554432 >> 24 !== -2) {
+ $ERROR('#794: -33554432 >> 24 === -2. Actual: ' + (-33554432 >> 24));
+}
+
+
+if (-67108864 >> 24 !== -4) {
+ $ERROR('#795: -67108864 >> 24 === -4. Actual: ' + (-67108864 >> 24));
+}
+
+
+if (-134217728 >> 24 !== -8) {
+ $ERROR('#796: -134217728 >> 24 === -8. Actual: ' + (-134217728 >> 24));
+}
+
+
+if (-268435456 >> 24 !== -16) {
+ $ERROR('#797: -268435456 >> 24 === -16. Actual: ' + (-268435456 >> 24));
+}
+
+
+if (-536870912 >> 24 !== -32) {
+ $ERROR('#798: -536870912 >> 24 === -32. Actual: ' + (-536870912 >> 24));
+}
+
+
+if (-1073741824 >> 24 !== -64) {
+ $ERROR('#799: -1073741824 >> 24 === -64. Actual: ' + (-1073741824 >> 24));
+}
+
+
+if (-2147483648 >> 24 !== -128) {
+ $ERROR('#800: -2147483648 >> 24 === -128. Actual: ' + (-2147483648 >> 24));
+}
+
+
+if (-1 >> 25 !== -1) {
+ $ERROR('#801: -1 >> 25 === -1. Actual: ' + (-1 >> 25));
+}
+
+
+if (-2 >> 25 !== -1) {
+ $ERROR('#802: -2 >> 25 === -1. Actual: ' + (-2 >> 25));
+}
+
+
+if (-4 >> 25 !== -1) {
+ $ERROR('#803: -4 >> 25 === -1. Actual: ' + (-4 >> 25));
+}
+
+
+if (-8 >> 25 !== -1) {
+ $ERROR('#804: -8 >> 25 === -1. Actual: ' + (-8 >> 25));
+}
+
+
+if (-16 >> 25 !== -1) {
+ $ERROR('#805: -16 >> 25 === -1. Actual: ' + (-16 >> 25));
+}
+
+
+if (-32 >> 25 !== -1) {
+ $ERROR('#806: -32 >> 25 === -1. Actual: ' + (-32 >> 25));
+}
+
+
+if (-64 >> 25 !== -1) {
+ $ERROR('#807: -64 >> 25 === -1. Actual: ' + (-64 >> 25));
+}
+
+
+if (-128 >> 25 !== -1) {
+ $ERROR('#808: -128 >> 25 === -1. Actual: ' + (-128 >> 25));
+}
+
+
+if (-256 >> 25 !== -1) {
+ $ERROR('#809: -256 >> 25 === -1. Actual: ' + (-256 >> 25));
+}
+
+
+if (-512 >> 25 !== -1) {
+ $ERROR('#810: -512 >> 25 === -1. Actual: ' + (-512 >> 25));
+}
+
+
+if (-1024 >> 25 !== -1) {
+ $ERROR('#811: -1024 >> 25 === -1. Actual: ' + (-1024 >> 25));
+}
+
+
+if (-2048 >> 25 !== -1) {
+ $ERROR('#812: -2048 >> 25 === -1. Actual: ' + (-2048 >> 25));
+}
+
+
+if (-4096 >> 25 !== -1) {
+ $ERROR('#813: -4096 >> 25 === -1. Actual: ' + (-4096 >> 25));
+}
+
+
+if (-8192 >> 25 !== -1) {
+ $ERROR('#814: -8192 >> 25 === -1. Actual: ' + (-8192 >> 25));
+}
+
+
+if (-16384 >> 25 !== -1) {
+ $ERROR('#815: -16384 >> 25 === -1. Actual: ' + (-16384 >> 25));
+}
+
+
+if (-32768 >> 25 !== -1) {
+ $ERROR('#816: -32768 >> 25 === -1. Actual: ' + (-32768 >> 25));
+}
+
+
+if (-65536 >> 25 !== -1) {
+ $ERROR('#817: -65536 >> 25 === -1. Actual: ' + (-65536 >> 25));
+}
+
+
+if (-131072 >> 25 !== -1) {
+ $ERROR('#818: -131072 >> 25 === -1. Actual: ' + (-131072 >> 25));
+}
+
+
+if (-262144 >> 25 !== -1) {
+ $ERROR('#819: -262144 >> 25 === -1. Actual: ' + (-262144 >> 25));
+}
+
+
+if (-524288 >> 25 !== -1) {
+ $ERROR('#820: -524288 >> 25 === -1. Actual: ' + (-524288 >> 25));
+}
+
+
+if (-1048576 >> 25 !== -1) {
+ $ERROR('#821: -1048576 >> 25 === -1. Actual: ' + (-1048576 >> 25));
+}
+
+
+if (-2097152 >> 25 !== -1) {
+ $ERROR('#822: -2097152 >> 25 === -1. Actual: ' + (-2097152 >> 25));
+}
+
+
+if (-4194304 >> 25 !== -1) {
+ $ERROR('#823: -4194304 >> 25 === -1. Actual: ' + (-4194304 >> 25));
+}
+
+
+if (-8388608 >> 25 !== -1) {
+ $ERROR('#824: -8388608 >> 25 === -1. Actual: ' + (-8388608 >> 25));
+}
+
+
+if (-16777216 >> 25 !== -1) {
+ $ERROR('#825: -16777216 >> 25 === -1. Actual: ' + (-16777216 >> 25));
+}
+
+
+if (-33554432 >> 25 !== -1) {
+ $ERROR('#826: -33554432 >> 25 === -1. Actual: ' + (-33554432 >> 25));
+}
+
+
+if (-67108864 >> 25 !== -2) {
+ $ERROR('#827: -67108864 >> 25 === -2. Actual: ' + (-67108864 >> 25));
+}
+
+
+if (-134217728 >> 25 !== -4) {
+ $ERROR('#828: -134217728 >> 25 === -4. Actual: ' + (-134217728 >> 25));
+}
+
+
+if (-268435456 >> 25 !== -8) {
+ $ERROR('#829: -268435456 >> 25 === -8. Actual: ' + (-268435456 >> 25));
+}
+
+
+if (-536870912 >> 25 !== -16) {
+ $ERROR('#830: -536870912 >> 25 === -16. Actual: ' + (-536870912 >> 25));
+}
+
+
+if (-1073741824 >> 25 !== -32) {
+ $ERROR('#831: -1073741824 >> 25 === -32. Actual: ' + (-1073741824 >> 25));
+}
+
+
+if (-2147483648 >> 25 !== -64) {
+ $ERROR('#832: -2147483648 >> 25 === -64. Actual: ' + (-2147483648 >> 25));
+}
+
+
+if (-1 >> 26 !== -1) {
+ $ERROR('#833: -1 >> 26 === -1. Actual: ' + (-1 >> 26));
+}
+
+
+if (-2 >> 26 !== -1) {
+ $ERROR('#834: -2 >> 26 === -1. Actual: ' + (-2 >> 26));
+}
+
+
+if (-4 >> 26 !== -1) {
+ $ERROR('#835: -4 >> 26 === -1. Actual: ' + (-4 >> 26));
+}
+
+
+if (-8 >> 26 !== -1) {
+ $ERROR('#836: -8 >> 26 === -1. Actual: ' + (-8 >> 26));
+}
+
+
+if (-16 >> 26 !== -1) {
+ $ERROR('#837: -16 >> 26 === -1. Actual: ' + (-16 >> 26));
+}
+
+
+if (-32 >> 26 !== -1) {
+ $ERROR('#838: -32 >> 26 === -1. Actual: ' + (-32 >> 26));
+}
+
+
+if (-64 >> 26 !== -1) {
+ $ERROR('#839: -64 >> 26 === -1. Actual: ' + (-64 >> 26));
+}
+
+
+if (-128 >> 26 !== -1) {
+ $ERROR('#840: -128 >> 26 === -1. Actual: ' + (-128 >> 26));
+}
+
+
+if (-256 >> 26 !== -1) {
+ $ERROR('#841: -256 >> 26 === -1. Actual: ' + (-256 >> 26));
+}
+
+
+if (-512 >> 26 !== -1) {
+ $ERROR('#842: -512 >> 26 === -1. Actual: ' + (-512 >> 26));
+}
+
+
+if (-1024 >> 26 !== -1) {
+ $ERROR('#843: -1024 >> 26 === -1. Actual: ' + (-1024 >> 26));
+}
+
+
+if (-2048 >> 26 !== -1) {
+ $ERROR('#844: -2048 >> 26 === -1. Actual: ' + (-2048 >> 26));
+}
+
+
+if (-4096 >> 26 !== -1) {
+ $ERROR('#845: -4096 >> 26 === -1. Actual: ' + (-4096 >> 26));
+}
+
+
+if (-8192 >> 26 !== -1) {
+ $ERROR('#846: -8192 >> 26 === -1. Actual: ' + (-8192 >> 26));
+}
+
+
+if (-16384 >> 26 !== -1) {
+ $ERROR('#847: -16384 >> 26 === -1. Actual: ' + (-16384 >> 26));
+}
+
+
+if (-32768 >> 26 !== -1) {
+ $ERROR('#848: -32768 >> 26 === -1. Actual: ' + (-32768 >> 26));
+}
+
+
+if (-65536 >> 26 !== -1) {
+ $ERROR('#849: -65536 >> 26 === -1. Actual: ' + (-65536 >> 26));
+}
+
+
+if (-131072 >> 26 !== -1) {
+ $ERROR('#850: -131072 >> 26 === -1. Actual: ' + (-131072 >> 26));
+}
+
+
+if (-262144 >> 26 !== -1) {
+ $ERROR('#851: -262144 >> 26 === -1. Actual: ' + (-262144 >> 26));
+}
+
+
+if (-524288 >> 26 !== -1) {
+ $ERROR('#852: -524288 >> 26 === -1. Actual: ' + (-524288 >> 26));
+}
+
+
+if (-1048576 >> 26 !== -1) {
+ $ERROR('#853: -1048576 >> 26 === -1. Actual: ' + (-1048576 >> 26));
+}
+
+
+if (-2097152 >> 26 !== -1) {
+ $ERROR('#854: -2097152 >> 26 === -1. Actual: ' + (-2097152 >> 26));
+}
+
+
+if (-4194304 >> 26 !== -1) {
+ $ERROR('#855: -4194304 >> 26 === -1. Actual: ' + (-4194304 >> 26));
+}
+
+
+if (-8388608 >> 26 !== -1) {
+ $ERROR('#856: -8388608 >> 26 === -1. Actual: ' + (-8388608 >> 26));
+}
+
+
+if (-16777216 >> 26 !== -1) {
+ $ERROR('#857: -16777216 >> 26 === -1. Actual: ' + (-16777216 >> 26));
+}
+
+
+if (-33554432 >> 26 !== -1) {
+ $ERROR('#858: -33554432 >> 26 === -1. Actual: ' + (-33554432 >> 26));
+}
+
+
+if (-67108864 >> 26 !== -1) {
+ $ERROR('#859: -67108864 >> 26 === -1. Actual: ' + (-67108864 >> 26));
+}
+
+
+if (-134217728 >> 26 !== -2) {
+ $ERROR('#860: -134217728 >> 26 === -2. Actual: ' + (-134217728 >> 26));
+}
+
+
+if (-268435456 >> 26 !== -4) {
+ $ERROR('#861: -268435456 >> 26 === -4. Actual: ' + (-268435456 >> 26));
+}
+
+
+if (-536870912 >> 26 !== -8) {
+ $ERROR('#862: -536870912 >> 26 === -8. Actual: ' + (-536870912 >> 26));
+}
+
+
+if (-1073741824 >> 26 !== -16) {
+ $ERROR('#863: -1073741824 >> 26 === -16. Actual: ' + (-1073741824 >> 26));
+}
+
+
+if (-2147483648 >> 26 !== -32) {
+ $ERROR('#864: -2147483648 >> 26 === -32. Actual: ' + (-2147483648 >> 26));
+}
+
+
+if (-1 >> 27 !== -1) {
+ $ERROR('#865: -1 >> 27 === -1. Actual: ' + (-1 >> 27));
+}
+
+
+if (-2 >> 27 !== -1) {
+ $ERROR('#866: -2 >> 27 === -1. Actual: ' + (-2 >> 27));
+}
+
+
+if (-4 >> 27 !== -1) {
+ $ERROR('#867: -4 >> 27 === -1. Actual: ' + (-4 >> 27));
+}
+
+
+if (-8 >> 27 !== -1) {
+ $ERROR('#868: -8 >> 27 === -1. Actual: ' + (-8 >> 27));
+}
+
+
+if (-16 >> 27 !== -1) {
+ $ERROR('#869: -16 >> 27 === -1. Actual: ' + (-16 >> 27));
+}
+
+
+if (-32 >> 27 !== -1) {
+ $ERROR('#870: -32 >> 27 === -1. Actual: ' + (-32 >> 27));
+}
+
+
+if (-64 >> 27 !== -1) {
+ $ERROR('#871: -64 >> 27 === -1. Actual: ' + (-64 >> 27));
+}
+
+
+if (-128 >> 27 !== -1) {
+ $ERROR('#872: -128 >> 27 === -1. Actual: ' + (-128 >> 27));
+}
+
+
+if (-256 >> 27 !== -1) {
+ $ERROR('#873: -256 >> 27 === -1. Actual: ' + (-256 >> 27));
+}
+
+
+if (-512 >> 27 !== -1) {
+ $ERROR('#874: -512 >> 27 === -1. Actual: ' + (-512 >> 27));
+}
+
+
+if (-1024 >> 27 !== -1) {
+ $ERROR('#875: -1024 >> 27 === -1. Actual: ' + (-1024 >> 27));
+}
+
+
+if (-2048 >> 27 !== -1) {
+ $ERROR('#876: -2048 >> 27 === -1. Actual: ' + (-2048 >> 27));
+}
+
+
+if (-4096 >> 27 !== -1) {
+ $ERROR('#877: -4096 >> 27 === -1. Actual: ' + (-4096 >> 27));
+}
+
+
+if (-8192 >> 27 !== -1) {
+ $ERROR('#878: -8192 >> 27 === -1. Actual: ' + (-8192 >> 27));
+}
+
+
+if (-16384 >> 27 !== -1) {
+ $ERROR('#879: -16384 >> 27 === -1. Actual: ' + (-16384 >> 27));
+}
+
+
+if (-32768 >> 27 !== -1) {
+ $ERROR('#880: -32768 >> 27 === -1. Actual: ' + (-32768 >> 27));
+}
+
+
+if (-65536 >> 27 !== -1) {
+ $ERROR('#881: -65536 >> 27 === -1. Actual: ' + (-65536 >> 27));
+}
+
+
+if (-131072 >> 27 !== -1) {
+ $ERROR('#882: -131072 >> 27 === -1. Actual: ' + (-131072 >> 27));
+}
+
+
+if (-262144 >> 27 !== -1) {
+ $ERROR('#883: -262144 >> 27 === -1. Actual: ' + (-262144 >> 27));
+}
+
+
+if (-524288 >> 27 !== -1) {
+ $ERROR('#884: -524288 >> 27 === -1. Actual: ' + (-524288 >> 27));
+}
+
+
+if (-1048576 >> 27 !== -1) {
+ $ERROR('#885: -1048576 >> 27 === -1. Actual: ' + (-1048576 >> 27));
+}
+
+
+if (-2097152 >> 27 !== -1) {
+ $ERROR('#886: -2097152 >> 27 === -1. Actual: ' + (-2097152 >> 27));
+}
+
+
+if (-4194304 >> 27 !== -1) {
+ $ERROR('#887: -4194304 >> 27 === -1. Actual: ' + (-4194304 >> 27));
+}
+
+
+if (-8388608 >> 27 !== -1) {
+ $ERROR('#888: -8388608 >> 27 === -1. Actual: ' + (-8388608 >> 27));
+}
+
+
+if (-16777216 >> 27 !== -1) {
+ $ERROR('#889: -16777216 >> 27 === -1. Actual: ' + (-16777216 >> 27));
+}
+
+
+if (-33554432 >> 27 !== -1) {
+ $ERROR('#890: -33554432 >> 27 === -1. Actual: ' + (-33554432 >> 27));
+}
+
+
+if (-67108864 >> 27 !== -1) {
+ $ERROR('#891: -67108864 >> 27 === -1. Actual: ' + (-67108864 >> 27));
+}
+
+
+if (-134217728 >> 27 !== -1) {
+ $ERROR('#892: -134217728 >> 27 === -1. Actual: ' + (-134217728 >> 27));
+}
+
+
+if (-268435456 >> 27 !== -2) {
+ $ERROR('#893: -268435456 >> 27 === -2. Actual: ' + (-268435456 >> 27));
+}
+
+
+if (-536870912 >> 27 !== -4) {
+ $ERROR('#894: -536870912 >> 27 === -4. Actual: ' + (-536870912 >> 27));
+}
+
+
+if (-1073741824 >> 27 !== -8) {
+ $ERROR('#895: -1073741824 >> 27 === -8. Actual: ' + (-1073741824 >> 27));
+}
+
+
+if (-2147483648 >> 27 !== -16) {
+ $ERROR('#896: -2147483648 >> 27 === -16. Actual: ' + (-2147483648 >> 27));
+}
+
+
+if (-1 >> 28 !== -1) {
+ $ERROR('#897: -1 >> 28 === -1. Actual: ' + (-1 >> 28));
+}
+
+
+if (-2 >> 28 !== -1) {
+ $ERROR('#898: -2 >> 28 === -1. Actual: ' + (-2 >> 28));
+}
+
+
+if (-4 >> 28 !== -1) {
+ $ERROR('#899: -4 >> 28 === -1. Actual: ' + (-4 >> 28));
+}
+
+
+if (-8 >> 28 !== -1) {
+ $ERROR('#900: -8 >> 28 === -1. Actual: ' + (-8 >> 28));
+}
+
+
+if (-16 >> 28 !== -1) {
+ $ERROR('#901: -16 >> 28 === -1. Actual: ' + (-16 >> 28));
+}
+
+
+if (-32 >> 28 !== -1) {
+ $ERROR('#902: -32 >> 28 === -1. Actual: ' + (-32 >> 28));
+}
+
+
+if (-64 >> 28 !== -1) {
+ $ERROR('#903: -64 >> 28 === -1. Actual: ' + (-64 >> 28));
+}
+
+
+if (-128 >> 28 !== -1) {
+ $ERROR('#904: -128 >> 28 === -1. Actual: ' + (-128 >> 28));
+}
+
+
+if (-256 >> 28 !== -1) {
+ $ERROR('#905: -256 >> 28 === -1. Actual: ' + (-256 >> 28));
+}
+
+
+if (-512 >> 28 !== -1) {
+ $ERROR('#906: -512 >> 28 === -1. Actual: ' + (-512 >> 28));
+}
+
+
+if (-1024 >> 28 !== -1) {
+ $ERROR('#907: -1024 >> 28 === -1. Actual: ' + (-1024 >> 28));
+}
+
+
+if (-2048 >> 28 !== -1) {
+ $ERROR('#908: -2048 >> 28 === -1. Actual: ' + (-2048 >> 28));
+}
+
+
+if (-4096 >> 28 !== -1) {
+ $ERROR('#909: -4096 >> 28 === -1. Actual: ' + (-4096 >> 28));
+}
+
+
+if (-8192 >> 28 !== -1) {
+ $ERROR('#910: -8192 >> 28 === -1. Actual: ' + (-8192 >> 28));
+}
+
+
+if (-16384 >> 28 !== -1) {
+ $ERROR('#911: -16384 >> 28 === -1. Actual: ' + (-16384 >> 28));
+}
+
+
+if (-32768 >> 28 !== -1) {
+ $ERROR('#912: -32768 >> 28 === -1. Actual: ' + (-32768 >> 28));
+}
+
+
+if (-65536 >> 28 !== -1) {
+ $ERROR('#913: -65536 >> 28 === -1. Actual: ' + (-65536 >> 28));
+}
+
+
+if (-131072 >> 28 !== -1) {
+ $ERROR('#914: -131072 >> 28 === -1. Actual: ' + (-131072 >> 28));
+}
+
+
+if (-262144 >> 28 !== -1) {
+ $ERROR('#915: -262144 >> 28 === -1. Actual: ' + (-262144 >> 28));
+}
+
+
+if (-524288 >> 28 !== -1) {
+ $ERROR('#916: -524288 >> 28 === -1. Actual: ' + (-524288 >> 28));
+}
+
+
+if (-1048576 >> 28 !== -1) {
+ $ERROR('#917: -1048576 >> 28 === -1. Actual: ' + (-1048576 >> 28));
+}
+
+
+if (-2097152 >> 28 !== -1) {
+ $ERROR('#918: -2097152 >> 28 === -1. Actual: ' + (-2097152 >> 28));
+}
+
+
+if (-4194304 >> 28 !== -1) {
+ $ERROR('#919: -4194304 >> 28 === -1. Actual: ' + (-4194304 >> 28));
+}
+
+
+if (-8388608 >> 28 !== -1) {
+ $ERROR('#920: -8388608 >> 28 === -1. Actual: ' + (-8388608 >> 28));
+}
+
+
+if (-16777216 >> 28 !== -1) {
+ $ERROR('#921: -16777216 >> 28 === -1. Actual: ' + (-16777216 >> 28));
+}
+
+
+if (-33554432 >> 28 !== -1) {
+ $ERROR('#922: -33554432 >> 28 === -1. Actual: ' + (-33554432 >> 28));
+}
+
+
+if (-67108864 >> 28 !== -1) {
+ $ERROR('#923: -67108864 >> 28 === -1. Actual: ' + (-67108864 >> 28));
+}
+
+
+if (-134217728 >> 28 !== -1) {
+ $ERROR('#924: -134217728 >> 28 === -1. Actual: ' + (-134217728 >> 28));
+}
+
+
+if (-268435456 >> 28 !== -1) {
+ $ERROR('#925: -268435456 >> 28 === -1. Actual: ' + (-268435456 >> 28));
+}
+
+
+if (-536870912 >> 28 !== -2) {
+ $ERROR('#926: -536870912 >> 28 === -2. Actual: ' + (-536870912 >> 28));
+}
+
+
+if (-1073741824 >> 28 !== -4) {
+ $ERROR('#927: -1073741824 >> 28 === -4. Actual: ' + (-1073741824 >> 28));
+}
+
+
+if (-2147483648 >> 28 !== -8) {
+ $ERROR('#928: -2147483648 >> 28 === -8. Actual: ' + (-2147483648 >> 28));
+}
+
+
+if (-1 >> 29 !== -1) {
+ $ERROR('#929: -1 >> 29 === -1. Actual: ' + (-1 >> 29));
+}
+
+
+if (-2 >> 29 !== -1) {
+ $ERROR('#930: -2 >> 29 === -1. Actual: ' + (-2 >> 29));
+}
+
+
+if (-4 >> 29 !== -1) {
+ $ERROR('#931: -4 >> 29 === -1. Actual: ' + (-4 >> 29));
+}
+
+
+if (-8 >> 29 !== -1) {
+ $ERROR('#932: -8 >> 29 === -1. Actual: ' + (-8 >> 29));
+}
+
+
+if (-16 >> 29 !== -1) {
+ $ERROR('#933: -16 >> 29 === -1. Actual: ' + (-16 >> 29));
+}
+
+
+if (-32 >> 29 !== -1) {
+ $ERROR('#934: -32 >> 29 === -1. Actual: ' + (-32 >> 29));
+}
+
+
+if (-64 >> 29 !== -1) {
+ $ERROR('#935: -64 >> 29 === -1. Actual: ' + (-64 >> 29));
+}
+
+
+if (-128 >> 29 !== -1) {
+ $ERROR('#936: -128 >> 29 === -1. Actual: ' + (-128 >> 29));
+}
+
+
+if (-256 >> 29 !== -1) {
+ $ERROR('#937: -256 >> 29 === -1. Actual: ' + (-256 >> 29));
+}
+
+
+if (-512 >> 29 !== -1) {
+ $ERROR('#938: -512 >> 29 === -1. Actual: ' + (-512 >> 29));
+}
+
+
+if (-1024 >> 29 !== -1) {
+ $ERROR('#939: -1024 >> 29 === -1. Actual: ' + (-1024 >> 29));
+}
+
+
+if (-2048 >> 29 !== -1) {
+ $ERROR('#940: -2048 >> 29 === -1. Actual: ' + (-2048 >> 29));
+}
+
+
+if (-4096 >> 29 !== -1) {
+ $ERROR('#941: -4096 >> 29 === -1. Actual: ' + (-4096 >> 29));
+}
+
+
+if (-8192 >> 29 !== -1) {
+ $ERROR('#942: -8192 >> 29 === -1. Actual: ' + (-8192 >> 29));
+}
+
+
+if (-16384 >> 29 !== -1) {
+ $ERROR('#943: -16384 >> 29 === -1. Actual: ' + (-16384 >> 29));
+}
+
+
+if (-32768 >> 29 !== -1) {
+ $ERROR('#944: -32768 >> 29 === -1. Actual: ' + (-32768 >> 29));
+}
+
+
+if (-65536 >> 29 !== -1) {
+ $ERROR('#945: -65536 >> 29 === -1. Actual: ' + (-65536 >> 29));
+}
+
+
+if (-131072 >> 29 !== -1) {
+ $ERROR('#946: -131072 >> 29 === -1. Actual: ' + (-131072 >> 29));
+}
+
+
+if (-262144 >> 29 !== -1) {
+ $ERROR('#947: -262144 >> 29 === -1. Actual: ' + (-262144 >> 29));
+}
+
+
+if (-524288 >> 29 !== -1) {
+ $ERROR('#948: -524288 >> 29 === -1. Actual: ' + (-524288 >> 29));
+}
+
+
+if (-1048576 >> 29 !== -1) {
+ $ERROR('#949: -1048576 >> 29 === -1. Actual: ' + (-1048576 >> 29));
+}
+
+
+if (-2097152 >> 29 !== -1) {
+ $ERROR('#950: -2097152 >> 29 === -1. Actual: ' + (-2097152 >> 29));
+}
+
+
+if (-4194304 >> 29 !== -1) {
+ $ERROR('#951: -4194304 >> 29 === -1. Actual: ' + (-4194304 >> 29));
+}
+
+
+if (-8388608 >> 29 !== -1) {
+ $ERROR('#952: -8388608 >> 29 === -1. Actual: ' + (-8388608 >> 29));
+}
+
+
+if (-16777216 >> 29 !== -1) {
+ $ERROR('#953: -16777216 >> 29 === -1. Actual: ' + (-16777216 >> 29));
+}
+
+
+if (-33554432 >> 29 !== -1) {
+ $ERROR('#954: -33554432 >> 29 === -1. Actual: ' + (-33554432 >> 29));
+}
+
+
+if (-67108864 >> 29 !== -1) {
+ $ERROR('#955: -67108864 >> 29 === -1. Actual: ' + (-67108864 >> 29));
+}
+
+
+if (-134217728 >> 29 !== -1) {
+ $ERROR('#956: -134217728 >> 29 === -1. Actual: ' + (-134217728 >> 29));
+}
+
+
+if (-268435456 >> 29 !== -1) {
+ $ERROR('#957: -268435456 >> 29 === -1. Actual: ' + (-268435456 >> 29));
+}
+
+
+if (-536870912 >> 29 !== -1) {
+ $ERROR('#958: -536870912 >> 29 === -1. Actual: ' + (-536870912 >> 29));
+}
+
+
+if (-1073741824 >> 29 !== -2) {
+ $ERROR('#959: -1073741824 >> 29 === -2. Actual: ' + (-1073741824 >> 29));
+}
+
+
+if (-2147483648 >> 29 !== -4) {
+ $ERROR('#960: -2147483648 >> 29 === -4. Actual: ' + (-2147483648 >> 29));
+}
+
+
+if (-1 >> 30 !== -1) {
+ $ERROR('#961: -1 >> 30 === -1. Actual: ' + (-1 >> 30));
+}
+
+
+if (-2 >> 30 !== -1) {
+ $ERROR('#962: -2 >> 30 === -1. Actual: ' + (-2 >> 30));
+}
+
+
+if (-4 >> 30 !== -1) {
+ $ERROR('#963: -4 >> 30 === -1. Actual: ' + (-4 >> 30));
+}
+
+
+if (-8 >> 30 !== -1) {
+ $ERROR('#964: -8 >> 30 === -1. Actual: ' + (-8 >> 30));
+}
+
+
+if (-16 >> 30 !== -1) {
+ $ERROR('#965: -16 >> 30 === -1. Actual: ' + (-16 >> 30));
+}
+
+
+if (-32 >> 30 !== -1) {
+ $ERROR('#966: -32 >> 30 === -1. Actual: ' + (-32 >> 30));
+}
+
+
+if (-64 >> 30 !== -1) {
+ $ERROR('#967: -64 >> 30 === -1. Actual: ' + (-64 >> 30));
+}
+
+
+if (-128 >> 30 !== -1) {
+ $ERROR('#968: -128 >> 30 === -1. Actual: ' + (-128 >> 30));
+}
+
+
+if (-256 >> 30 !== -1) {
+ $ERROR('#969: -256 >> 30 === -1. Actual: ' + (-256 >> 30));
+}
+
+
+if (-512 >> 30 !== -1) {
+ $ERROR('#970: -512 >> 30 === -1. Actual: ' + (-512 >> 30));
+}
+
+
+if (-1024 >> 30 !== -1) {
+ $ERROR('#971: -1024 >> 30 === -1. Actual: ' + (-1024 >> 30));
+}
+
+
+if (-2048 >> 30 !== -1) {
+ $ERROR('#972: -2048 >> 30 === -1. Actual: ' + (-2048 >> 30));
+}
+
+
+if (-4096 >> 30 !== -1) {
+ $ERROR('#973: -4096 >> 30 === -1. Actual: ' + (-4096 >> 30));
+}
+
+
+if (-8192 >> 30 !== -1) {
+ $ERROR('#974: -8192 >> 30 === -1. Actual: ' + (-8192 >> 30));
+}
+
+
+if (-16384 >> 30 !== -1) {
+ $ERROR('#975: -16384 >> 30 === -1. Actual: ' + (-16384 >> 30));
+}
+
+
+if (-32768 >> 30 !== -1) {
+ $ERROR('#976: -32768 >> 30 === -1. Actual: ' + (-32768 >> 30));
+}
+
+
+if (-65536 >> 30 !== -1) {
+ $ERROR('#977: -65536 >> 30 === -1. Actual: ' + (-65536 >> 30));
+}
+
+
+if (-131072 >> 30 !== -1) {
+ $ERROR('#978: -131072 >> 30 === -1. Actual: ' + (-131072 >> 30));
+}
+
+
+if (-262144 >> 30 !== -1) {
+ $ERROR('#979: -262144 >> 30 === -1. Actual: ' + (-262144 >> 30));
+}
+
+
+if (-524288 >> 30 !== -1) {
+ $ERROR('#980: -524288 >> 30 === -1. Actual: ' + (-524288 >> 30));
+}
+
+
+if (-1048576 >> 30 !== -1) {
+ $ERROR('#981: -1048576 >> 30 === -1. Actual: ' + (-1048576 >> 30));
+}
+
+
+if (-2097152 >> 30 !== -1) {
+ $ERROR('#982: -2097152 >> 30 === -1. Actual: ' + (-2097152 >> 30));
+}
+
+
+if (-4194304 >> 30 !== -1) {
+ $ERROR('#983: -4194304 >> 30 === -1. Actual: ' + (-4194304 >> 30));
+}
+
+
+if (-8388608 >> 30 !== -1) {
+ $ERROR('#984: -8388608 >> 30 === -1. Actual: ' + (-8388608 >> 30));
+}
+
+
+if (-16777216 >> 30 !== -1) {
+ $ERROR('#985: -16777216 >> 30 === -1. Actual: ' + (-16777216 >> 30));
+}
+
+
+if (-33554432 >> 30 !== -1) {
+ $ERROR('#986: -33554432 >> 30 === -1. Actual: ' + (-33554432 >> 30));
+}
+
+
+if (-67108864 >> 30 !== -1) {
+ $ERROR('#987: -67108864 >> 30 === -1. Actual: ' + (-67108864 >> 30));
+}
+
+
+if (-134217728 >> 30 !== -1) {
+ $ERROR('#988: -134217728 >> 30 === -1. Actual: ' + (-134217728 >> 30));
+}
+
+
+if (-268435456 >> 30 !== -1) {
+ $ERROR('#989: -268435456 >> 30 === -1. Actual: ' + (-268435456 >> 30));
+}
+
+
+if (-536870912 >> 30 !== -1) {
+ $ERROR('#990: -536870912 >> 30 === -1. Actual: ' + (-536870912 >> 30));
+}
+
+
+if (-1073741824 >> 30 !== -1) {
+ $ERROR('#991: -1073741824 >> 30 === -1. Actual: ' + (-1073741824 >> 30));
+}
+
+
+if (-2147483648 >> 30 !== -2) {
+ $ERROR('#992: -2147483648 >> 30 === -2. Actual: ' + (-2147483648 >> 30));
+}
+
+
+if (-1 >> 31 !== -1) {
+ $ERROR('#993: -1 >> 31 === -1. Actual: ' + (-1 >> 31));
+}
+
+
+if (-2 >> 31 !== -1) {
+ $ERROR('#994: -2 >> 31 === -1. Actual: ' + (-2 >> 31));
+}
+
+
+if (-4 >> 31 !== -1) {
+ $ERROR('#995: -4 >> 31 === -1. Actual: ' + (-4 >> 31));
+}
+
+
+if (-8 >> 31 !== -1) {
+ $ERROR('#996: -8 >> 31 === -1. Actual: ' + (-8 >> 31));
+}
+
+
+if (-16 >> 31 !== -1) {
+ $ERROR('#997: -16 >> 31 === -1. Actual: ' + (-16 >> 31));
+}
+
+
+if (-32 >> 31 !== -1) {
+ $ERROR('#998: -32 >> 31 === -1. Actual: ' + (-32 >> 31));
+}
+
+
+if (-64 >> 31 !== -1) {
+ $ERROR('#999: -64 >> 31 === -1. Actual: ' + (-64 >> 31));
+}
+
+
+if (-128 >> 31 !== -1) {
+ $ERROR('#1000: -128 >> 31 === -1. Actual: ' + (-128 >> 31));
+}
+
+
+if (-256 >> 31 !== -1) {
+ $ERROR('#1001: -256 >> 31 === -1. Actual: ' + (-256 >> 31));
+}
+
+
+if (-512 >> 31 !== -1) {
+ $ERROR('#1002: -512 >> 31 === -1. Actual: ' + (-512 >> 31));
+}
+
+
+if (-1024 >> 31 !== -1) {
+ $ERROR('#1003: -1024 >> 31 === -1. Actual: ' + (-1024 >> 31));
+}
+
+
+if (-2048 >> 31 !== -1) {
+ $ERROR('#1004: -2048 >> 31 === -1. Actual: ' + (-2048 >> 31));
+}
+
+
+if (-4096 >> 31 !== -1) {
+ $ERROR('#1005: -4096 >> 31 === -1. Actual: ' + (-4096 >> 31));
+}
+
+
+if (-8192 >> 31 !== -1) {
+ $ERROR('#1006: -8192 >> 31 === -1. Actual: ' + (-8192 >> 31));
+}
+
+
+if (-16384 >> 31 !== -1) {
+ $ERROR('#1007: -16384 >> 31 === -1. Actual: ' + (-16384 >> 31));
+}
+
+
+if (-32768 >> 31 !== -1) {
+ $ERROR('#1008: -32768 >> 31 === -1. Actual: ' + (-32768 >> 31));
+}
+
+
+if (-65536 >> 31 !== -1) {
+ $ERROR('#1009: -65536 >> 31 === -1. Actual: ' + (-65536 >> 31));
+}
+
+
+if (-131072 >> 31 !== -1) {
+ $ERROR('#1010: -131072 >> 31 === -1. Actual: ' + (-131072 >> 31));
+}
+
+
+if (-262144 >> 31 !== -1) {
+ $ERROR('#1011: -262144 >> 31 === -1. Actual: ' + (-262144 >> 31));
+}
+
+
+if (-524288 >> 31 !== -1) {
+ $ERROR('#1012: -524288 >> 31 === -1. Actual: ' + (-524288 >> 31));
+}
+
+
+if (-1048576 >> 31 !== -1) {
+ $ERROR('#1013: -1048576 >> 31 === -1. Actual: ' + (-1048576 >> 31));
+}
+
+
+if (-2097152 >> 31 !== -1) {
+ $ERROR('#1014: -2097152 >> 31 === -1. Actual: ' + (-2097152 >> 31));
+}
+
+
+if (-4194304 >> 31 !== -1) {
+ $ERROR('#1015: -4194304 >> 31 === -1. Actual: ' + (-4194304 >> 31));
+}
+
+
+if (-8388608 >> 31 !== -1) {
+ $ERROR('#1016: -8388608 >> 31 === -1. Actual: ' + (-8388608 >> 31));
+}
+
+
+if (-16777216 >> 31 !== -1) {
+ $ERROR('#1017: -16777216 >> 31 === -1. Actual: ' + (-16777216 >> 31));
+}
+
+
+if (-33554432 >> 31 !== -1) {
+ $ERROR('#1018: -33554432 >> 31 === -1. Actual: ' + (-33554432 >> 31));
+}
+
+
+if (-67108864 >> 31 !== -1) {
+ $ERROR('#1019: -67108864 >> 31 === -1. Actual: ' + (-67108864 >> 31));
+}
+
+
+if (-134217728 >> 31 !== -1) {
+ $ERROR('#1020: -134217728 >> 31 === -1. Actual: ' + (-134217728 >> 31));
+}
+
+
+if (-268435456 >> 31 !== -1) {
+ $ERROR('#1021: -268435456 >> 31 === -1. Actual: ' + (-268435456 >> 31));
+}
+
+
+if (-536870912 >> 31 !== -1) {
+ $ERROR('#1022: -536870912 >> 31 === -1. Actual: ' + (-536870912 >> 31));
+}
+
+
+if (-1073741824 >> 31 !== -1) {
+ $ERROR('#1023: -1073741824 >> 31 === -1. Actual: ' + (-1073741824 >> 31));
+}
+
+
+if (-2147483648 >> 31 !== -1) {
+ $ERROR('#1024: -2147483648 >> 31 === -1. Actual: ' + (-2147483648 >> 31));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T3.js
new file mode 100644
index 000000000..a64be3de7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T3.js
@@ -0,0 +1,2570 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A4_T3;
+ * @section: 11.7.2;
+ * @assertion: Check x >> y operator in distinct points;
+ * @description: ShiftExpression = 2^n - 1, n = 0...15;
+ */
+
+//CHECK
+
+if (0 >> 0 !== 0) {
+ $ERROR('#1: 0 >> 0 === 0. Actual: ' + (0 >> 0));
+}
+
+
+if (1 >> 0 !== 1) {
+ $ERROR('#2: 1 >> 0 === 1. Actual: ' + (1 >> 0));
+}
+
+
+if (3 >> 0 !== 3) {
+ $ERROR('#3: 3 >> 0 === 3. Actual: ' + (3 >> 0));
+}
+
+
+if (7 >> 0 !== 7) {
+ $ERROR('#4: 7 >> 0 === 7. Actual: ' + (7 >> 0));
+}
+
+
+if (15 >> 0 !== 15) {
+ $ERROR('#5: 15 >> 0 === 15. Actual: ' + (15 >> 0));
+}
+
+
+if (31 >> 0 !== 31) {
+ $ERROR('#6: 31 >> 0 === 31. Actual: ' + (31 >> 0));
+}
+
+
+if (63 >> 0 !== 63) {
+ $ERROR('#7: 63 >> 0 === 63. Actual: ' + (63 >> 0));
+}
+
+
+if (127 >> 0 !== 127) {
+ $ERROR('#8: 127 >> 0 === 127. Actual: ' + (127 >> 0));
+}
+
+
+if (255 >> 0 !== 255) {
+ $ERROR('#9: 255 >> 0 === 255. Actual: ' + (255 >> 0));
+}
+
+
+if (511 >> 0 !== 511) {
+ $ERROR('#10: 511 >> 0 === 511. Actual: ' + (511 >> 0));
+}
+
+
+if (1023 >> 0 !== 1023) {
+ $ERROR('#11: 1023 >> 0 === 1023. Actual: ' + (1023 >> 0));
+}
+
+
+if (2047 >> 0 !== 2047) {
+ $ERROR('#12: 2047 >> 0 === 2047. Actual: ' + (2047 >> 0));
+}
+
+
+if (4095 >> 0 !== 4095) {
+ $ERROR('#13: 4095 >> 0 === 4095. Actual: ' + (4095 >> 0));
+}
+
+
+if (8191 >> 0 !== 8191) {
+ $ERROR('#14: 8191 >> 0 === 8191. Actual: ' + (8191 >> 0));
+}
+
+
+if (16383 >> 0 !== 16383) {
+ $ERROR('#15: 16383 >> 0 === 16383. Actual: ' + (16383 >> 0));
+}
+
+
+if (32767 >> 0 !== 32767) {
+ $ERROR('#16: 32767 >> 0 === 32767. Actual: ' + (32767 >> 0));
+}
+
+
+if (65535 >> 0 !== 65535) {
+ $ERROR('#17: 65535 >> 0 === 65535. Actual: ' + (65535 >> 0));
+}
+
+
+if (131071 >> 0 !== 131071) {
+ $ERROR('#18: 131071 >> 0 === 131071. Actual: ' + (131071 >> 0));
+}
+
+
+if (262143 >> 0 !== 262143) {
+ $ERROR('#19: 262143 >> 0 === 262143. Actual: ' + (262143 >> 0));
+}
+
+
+if (524287 >> 0 !== 524287) {
+ $ERROR('#20: 524287 >> 0 === 524287. Actual: ' + (524287 >> 0));
+}
+
+
+if (1048575 >> 0 !== 1048575) {
+ $ERROR('#21: 1048575 >> 0 === 1048575. Actual: ' + (1048575 >> 0));
+}
+
+
+if (2097151 >> 0 !== 2097151) {
+ $ERROR('#22: 2097151 >> 0 === 2097151. Actual: ' + (2097151 >> 0));
+}
+
+
+if (4194303 >> 0 !== 4194303) {
+ $ERROR('#23: 4194303 >> 0 === 4194303. Actual: ' + (4194303 >> 0));
+}
+
+
+if (8388607 >> 0 !== 8388607) {
+ $ERROR('#24: 8388607 >> 0 === 8388607. Actual: ' + (8388607 >> 0));
+}
+
+
+if (16777215 >> 0 !== 16777215) {
+ $ERROR('#25: 16777215 >> 0 === 16777215. Actual: ' + (16777215 >> 0));
+}
+
+
+if (33554431 >> 0 !== 33554431) {
+ $ERROR('#26: 33554431 >> 0 === 33554431. Actual: ' + (33554431 >> 0));
+}
+
+
+if (67108863 >> 0 !== 67108863) {
+ $ERROR('#27: 67108863 >> 0 === 67108863. Actual: ' + (67108863 >> 0));
+}
+
+
+if (134217727 >> 0 !== 134217727) {
+ $ERROR('#28: 134217727 >> 0 === 134217727. Actual: ' + (134217727 >> 0));
+}
+
+
+if (268435455 >> 0 !== 268435455) {
+ $ERROR('#29: 268435455 >> 0 === 268435455. Actual: ' + (268435455 >> 0));
+}
+
+
+if (536870911 >> 0 !== 536870911) {
+ $ERROR('#30: 536870911 >> 0 === 536870911. Actual: ' + (536870911 >> 0));
+}
+
+
+if (1073741823 >> 0 !== 1073741823) {
+ $ERROR('#31: 1073741823 >> 0 === 1073741823. Actual: ' + (1073741823 >> 0));
+}
+
+
+if (2147483647 >> 0 !== 2147483647) {
+ $ERROR('#32: 2147483647 >> 0 === 2147483647. Actual: ' + (2147483647 >> 0));
+}
+
+
+if (0 >> 1 !== 0) {
+ $ERROR('#33: 0 >> 1 === 0. Actual: ' + (0 >> 1));
+}
+
+
+if (1 >> 1 !== 0) {
+ $ERROR('#34: 1 >> 1 === 0. Actual: ' + (1 >> 1));
+}
+
+
+if (3 >> 1 !== 1) {
+ $ERROR('#35: 3 >> 1 === 1. Actual: ' + (3 >> 1));
+}
+
+
+if (7 >> 1 !== 3) {
+ $ERROR('#36: 7 >> 1 === 3. Actual: ' + (7 >> 1));
+}
+
+
+if (15 >> 1 !== 7) {
+ $ERROR('#37: 15 >> 1 === 7. Actual: ' + (15 >> 1));
+}
+
+
+if (31 >> 1 !== 15) {
+ $ERROR('#38: 31 >> 1 === 15. Actual: ' + (31 >> 1));
+}
+
+
+if (63 >> 1 !== 31) {
+ $ERROR('#39: 63 >> 1 === 31. Actual: ' + (63 >> 1));
+}
+
+
+if (127 >> 1 !== 63) {
+ $ERROR('#40: 127 >> 1 === 63. Actual: ' + (127 >> 1));
+}
+
+
+if (255 >> 1 !== 127) {
+ $ERROR('#41: 255 >> 1 === 127. Actual: ' + (255 >> 1));
+}
+
+
+if (511 >> 1 !== 255) {
+ $ERROR('#42: 511 >> 1 === 255. Actual: ' + (511 >> 1));
+}
+
+
+if (1023 >> 1 !== 511) {
+ $ERROR('#43: 1023 >> 1 === 511. Actual: ' + (1023 >> 1));
+}
+
+
+if (2047 >> 1 !== 1023) {
+ $ERROR('#44: 2047 >> 1 === 1023. Actual: ' + (2047 >> 1));
+}
+
+
+if (4095 >> 1 !== 2047) {
+ $ERROR('#45: 4095 >> 1 === 2047. Actual: ' + (4095 >> 1));
+}
+
+
+if (8191 >> 1 !== 4095) {
+ $ERROR('#46: 8191 >> 1 === 4095. Actual: ' + (8191 >> 1));
+}
+
+
+if (16383 >> 1 !== 8191) {
+ $ERROR('#47: 16383 >> 1 === 8191. Actual: ' + (16383 >> 1));
+}
+
+
+if (32767 >> 1 !== 16383) {
+ $ERROR('#48: 32767 >> 1 === 16383. Actual: ' + (32767 >> 1));
+}
+
+
+if (65535 >> 1 !== 32767) {
+ $ERROR('#49: 65535 >> 1 === 32767. Actual: ' + (65535 >> 1));
+}
+
+
+if (131071 >> 1 !== 65535) {
+ $ERROR('#50: 131071 >> 1 === 65535. Actual: ' + (131071 >> 1));
+}
+
+
+if (262143 >> 1 !== 131071) {
+ $ERROR('#51: 262143 >> 1 === 131071. Actual: ' + (262143 >> 1));
+}
+
+
+if (524287 >> 1 !== 262143) {
+ $ERROR('#52: 524287 >> 1 === 262143. Actual: ' + (524287 >> 1));
+}
+
+
+if (1048575 >> 1 !== 524287) {
+ $ERROR('#53: 1048575 >> 1 === 524287. Actual: ' + (1048575 >> 1));
+}
+
+
+if (2097151 >> 1 !== 1048575) {
+ $ERROR('#54: 2097151 >> 1 === 1048575. Actual: ' + (2097151 >> 1));
+}
+
+
+if (4194303 >> 1 !== 2097151) {
+ $ERROR('#55: 4194303 >> 1 === 2097151. Actual: ' + (4194303 >> 1));
+}
+
+
+if (8388607 >> 1 !== 4194303) {
+ $ERROR('#56: 8388607 >> 1 === 4194303. Actual: ' + (8388607 >> 1));
+}
+
+
+if (16777215 >> 1 !== 8388607) {
+ $ERROR('#57: 16777215 >> 1 === 8388607. Actual: ' + (16777215 >> 1));
+}
+
+
+if (33554431 >> 1 !== 16777215) {
+ $ERROR('#58: 33554431 >> 1 === 16777215. Actual: ' + (33554431 >> 1));
+}
+
+
+if (67108863 >> 1 !== 33554431) {
+ $ERROR('#59: 67108863 >> 1 === 33554431. Actual: ' + (67108863 >> 1));
+}
+
+
+if (134217727 >> 1 !== 67108863) {
+ $ERROR('#60: 134217727 >> 1 === 67108863. Actual: ' + (134217727 >> 1));
+}
+
+
+if (268435455 >> 1 !== 134217727) {
+ $ERROR('#61: 268435455 >> 1 === 134217727. Actual: ' + (268435455 >> 1));
+}
+
+
+if (536870911 >> 1 !== 268435455) {
+ $ERROR('#62: 536870911 >> 1 === 268435455. Actual: ' + (536870911 >> 1));
+}
+
+
+if (1073741823 >> 1 !== 536870911) {
+ $ERROR('#63: 1073741823 >> 1 === 536870911. Actual: ' + (1073741823 >> 1));
+}
+
+
+if (2147483647 >> 1 !== 1073741823) {
+ $ERROR('#64: 2147483647 >> 1 === 1073741823. Actual: ' + (2147483647 >> 1));
+}
+
+
+if (0 >> 2 !== 0) {
+ $ERROR('#65: 0 >> 2 === 0. Actual: ' + (0 >> 2));
+}
+
+
+if (1 >> 2 !== 0) {
+ $ERROR('#66: 1 >> 2 === 0. Actual: ' + (1 >> 2));
+}
+
+
+if (3 >> 2 !== 0) {
+ $ERROR('#67: 3 >> 2 === 0. Actual: ' + (3 >> 2));
+}
+
+
+if (7 >> 2 !== 1) {
+ $ERROR('#68: 7 >> 2 === 1. Actual: ' + (7 >> 2));
+}
+
+
+if (15 >> 2 !== 3) {
+ $ERROR('#69: 15 >> 2 === 3. Actual: ' + (15 >> 2));
+}
+
+
+if (31 >> 2 !== 7) {
+ $ERROR('#70: 31 >> 2 === 7. Actual: ' + (31 >> 2));
+}
+
+
+if (63 >> 2 !== 15) {
+ $ERROR('#71: 63 >> 2 === 15. Actual: ' + (63 >> 2));
+}
+
+
+if (127 >> 2 !== 31) {
+ $ERROR('#72: 127 >> 2 === 31. Actual: ' + (127 >> 2));
+}
+
+
+if (255 >> 2 !== 63) {
+ $ERROR('#73: 255 >> 2 === 63. Actual: ' + (255 >> 2));
+}
+
+
+if (511 >> 2 !== 127) {
+ $ERROR('#74: 511 >> 2 === 127. Actual: ' + (511 >> 2));
+}
+
+
+if (1023 >> 2 !== 255) {
+ $ERROR('#75: 1023 >> 2 === 255. Actual: ' + (1023 >> 2));
+}
+
+
+if (2047 >> 2 !== 511) {
+ $ERROR('#76: 2047 >> 2 === 511. Actual: ' + (2047 >> 2));
+}
+
+
+if (4095 >> 2 !== 1023) {
+ $ERROR('#77: 4095 >> 2 === 1023. Actual: ' + (4095 >> 2));
+}
+
+
+if (8191 >> 2 !== 2047) {
+ $ERROR('#78: 8191 >> 2 === 2047. Actual: ' + (8191 >> 2));
+}
+
+
+if (16383 >> 2 !== 4095) {
+ $ERROR('#79: 16383 >> 2 === 4095. Actual: ' + (16383 >> 2));
+}
+
+
+if (32767 >> 2 !== 8191) {
+ $ERROR('#80: 32767 >> 2 === 8191. Actual: ' + (32767 >> 2));
+}
+
+
+if (65535 >> 2 !== 16383) {
+ $ERROR('#81: 65535 >> 2 === 16383. Actual: ' + (65535 >> 2));
+}
+
+
+if (131071 >> 2 !== 32767) {
+ $ERROR('#82: 131071 >> 2 === 32767. Actual: ' + (131071 >> 2));
+}
+
+
+if (262143 >> 2 !== 65535) {
+ $ERROR('#83: 262143 >> 2 === 65535. Actual: ' + (262143 >> 2));
+}
+
+
+if (524287 >> 2 !== 131071) {
+ $ERROR('#84: 524287 >> 2 === 131071. Actual: ' + (524287 >> 2));
+}
+
+
+if (1048575 >> 2 !== 262143) {
+ $ERROR('#85: 1048575 >> 2 === 262143. Actual: ' + (1048575 >> 2));
+}
+
+
+if (2097151 >> 2 !== 524287) {
+ $ERROR('#86: 2097151 >> 2 === 524287. Actual: ' + (2097151 >> 2));
+}
+
+
+if (4194303 >> 2 !== 1048575) {
+ $ERROR('#87: 4194303 >> 2 === 1048575. Actual: ' + (4194303 >> 2));
+}
+
+
+if (8388607 >> 2 !== 2097151) {
+ $ERROR('#88: 8388607 >> 2 === 2097151. Actual: ' + (8388607 >> 2));
+}
+
+
+if (16777215 >> 2 !== 4194303) {
+ $ERROR('#89: 16777215 >> 2 === 4194303. Actual: ' + (16777215 >> 2));
+}
+
+
+if (33554431 >> 2 !== 8388607) {
+ $ERROR('#90: 33554431 >> 2 === 8388607. Actual: ' + (33554431 >> 2));
+}
+
+
+if (67108863 >> 2 !== 16777215) {
+ $ERROR('#91: 67108863 >> 2 === 16777215. Actual: ' + (67108863 >> 2));
+}
+
+
+if (134217727 >> 2 !== 33554431) {
+ $ERROR('#92: 134217727 >> 2 === 33554431. Actual: ' + (134217727 >> 2));
+}
+
+
+if (268435455 >> 2 !== 67108863) {
+ $ERROR('#93: 268435455 >> 2 === 67108863. Actual: ' + (268435455 >> 2));
+}
+
+
+if (536870911 >> 2 !== 134217727) {
+ $ERROR('#94: 536870911 >> 2 === 134217727. Actual: ' + (536870911 >> 2));
+}
+
+
+if (1073741823 >> 2 !== 268435455) {
+ $ERROR('#95: 1073741823 >> 2 === 268435455. Actual: ' + (1073741823 >> 2));
+}
+
+
+if (2147483647 >> 2 !== 536870911) {
+ $ERROR('#96: 2147483647 >> 2 === 536870911. Actual: ' + (2147483647 >> 2));
+}
+
+
+if (0 >> 3 !== 0) {
+ $ERROR('#97: 0 >> 3 === 0. Actual: ' + (0 >> 3));
+}
+
+
+if (1 >> 3 !== 0) {
+ $ERROR('#98: 1 >> 3 === 0. Actual: ' + (1 >> 3));
+}
+
+
+if (3 >> 3 !== 0) {
+ $ERROR('#99: 3 >> 3 === 0. Actual: ' + (3 >> 3));
+}
+
+
+if (7 >> 3 !== 0) {
+ $ERROR('#100: 7 >> 3 === 0. Actual: ' + (7 >> 3));
+}
+
+
+if (15 >> 3 !== 1) {
+ $ERROR('#101: 15 >> 3 === 1. Actual: ' + (15 >> 3));
+}
+
+
+if (31 >> 3 !== 3) {
+ $ERROR('#102: 31 >> 3 === 3. Actual: ' + (31 >> 3));
+}
+
+
+if (63 >> 3 !== 7) {
+ $ERROR('#103: 63 >> 3 === 7. Actual: ' + (63 >> 3));
+}
+
+
+if (127 >> 3 !== 15) {
+ $ERROR('#104: 127 >> 3 === 15. Actual: ' + (127 >> 3));
+}
+
+
+if (255 >> 3 !== 31) {
+ $ERROR('#105: 255 >> 3 === 31. Actual: ' + (255 >> 3));
+}
+
+
+if (511 >> 3 !== 63) {
+ $ERROR('#106: 511 >> 3 === 63. Actual: ' + (511 >> 3));
+}
+
+
+if (1023 >> 3 !== 127) {
+ $ERROR('#107: 1023 >> 3 === 127. Actual: ' + (1023 >> 3));
+}
+
+
+if (2047 >> 3 !== 255) {
+ $ERROR('#108: 2047 >> 3 === 255. Actual: ' + (2047 >> 3));
+}
+
+
+if (4095 >> 3 !== 511) {
+ $ERROR('#109: 4095 >> 3 === 511. Actual: ' + (4095 >> 3));
+}
+
+
+if (8191 >> 3 !== 1023) {
+ $ERROR('#110: 8191 >> 3 === 1023. Actual: ' + (8191 >> 3));
+}
+
+
+if (16383 >> 3 !== 2047) {
+ $ERROR('#111: 16383 >> 3 === 2047. Actual: ' + (16383 >> 3));
+}
+
+
+if (32767 >> 3 !== 4095) {
+ $ERROR('#112: 32767 >> 3 === 4095. Actual: ' + (32767 >> 3));
+}
+
+
+if (65535 >> 3 !== 8191) {
+ $ERROR('#113: 65535 >> 3 === 8191. Actual: ' + (65535 >> 3));
+}
+
+
+if (131071 >> 3 !== 16383) {
+ $ERROR('#114: 131071 >> 3 === 16383. Actual: ' + (131071 >> 3));
+}
+
+
+if (262143 >> 3 !== 32767) {
+ $ERROR('#115: 262143 >> 3 === 32767. Actual: ' + (262143 >> 3));
+}
+
+
+if (524287 >> 3 !== 65535) {
+ $ERROR('#116: 524287 >> 3 === 65535. Actual: ' + (524287 >> 3));
+}
+
+
+if (1048575 >> 3 !== 131071) {
+ $ERROR('#117: 1048575 >> 3 === 131071. Actual: ' + (1048575 >> 3));
+}
+
+
+if (2097151 >> 3 !== 262143) {
+ $ERROR('#118: 2097151 >> 3 === 262143. Actual: ' + (2097151 >> 3));
+}
+
+
+if (4194303 >> 3 !== 524287) {
+ $ERROR('#119: 4194303 >> 3 === 524287. Actual: ' + (4194303 >> 3));
+}
+
+
+if (8388607 >> 3 !== 1048575) {
+ $ERROR('#120: 8388607 >> 3 === 1048575. Actual: ' + (8388607 >> 3));
+}
+
+
+if (16777215 >> 3 !== 2097151) {
+ $ERROR('#121: 16777215 >> 3 === 2097151. Actual: ' + (16777215 >> 3));
+}
+
+
+if (33554431 >> 3 !== 4194303) {
+ $ERROR('#122: 33554431 >> 3 === 4194303. Actual: ' + (33554431 >> 3));
+}
+
+
+if (67108863 >> 3 !== 8388607) {
+ $ERROR('#123: 67108863 >> 3 === 8388607. Actual: ' + (67108863 >> 3));
+}
+
+
+if (134217727 >> 3 !== 16777215) {
+ $ERROR('#124: 134217727 >> 3 === 16777215. Actual: ' + (134217727 >> 3));
+}
+
+
+if (268435455 >> 3 !== 33554431) {
+ $ERROR('#125: 268435455 >> 3 === 33554431. Actual: ' + (268435455 >> 3));
+}
+
+
+if (536870911 >> 3 !== 67108863) {
+ $ERROR('#126: 536870911 >> 3 === 67108863. Actual: ' + (536870911 >> 3));
+}
+
+
+if (1073741823 >> 3 !== 134217727) {
+ $ERROR('#127: 1073741823 >> 3 === 134217727. Actual: ' + (1073741823 >> 3));
+}
+
+
+if (2147483647 >> 3 !== 268435455) {
+ $ERROR('#128: 2147483647 >> 3 === 268435455. Actual: ' + (2147483647 >> 3));
+}
+
+
+if (0 >> 4 !== 0) {
+ $ERROR('#129: 0 >> 4 === 0. Actual: ' + (0 >> 4));
+}
+
+
+if (1 >> 4 !== 0) {
+ $ERROR('#130: 1 >> 4 === 0. Actual: ' + (1 >> 4));
+}
+
+
+if (3 >> 4 !== 0) {
+ $ERROR('#131: 3 >> 4 === 0. Actual: ' + (3 >> 4));
+}
+
+
+if (7 >> 4 !== 0) {
+ $ERROR('#132: 7 >> 4 === 0. Actual: ' + (7 >> 4));
+}
+
+
+if (15 >> 4 !== 0) {
+ $ERROR('#133: 15 >> 4 === 0. Actual: ' + (15 >> 4));
+}
+
+
+if (31 >> 4 !== 1) {
+ $ERROR('#134: 31 >> 4 === 1. Actual: ' + (31 >> 4));
+}
+
+
+if (63 >> 4 !== 3) {
+ $ERROR('#135: 63 >> 4 === 3. Actual: ' + (63 >> 4));
+}
+
+
+if (127 >> 4 !== 7) {
+ $ERROR('#136: 127 >> 4 === 7. Actual: ' + (127 >> 4));
+}
+
+
+if (255 >> 4 !== 15) {
+ $ERROR('#137: 255 >> 4 === 15. Actual: ' + (255 >> 4));
+}
+
+
+if (511 >> 4 !== 31) {
+ $ERROR('#138: 511 >> 4 === 31. Actual: ' + (511 >> 4));
+}
+
+
+if (1023 >> 4 !== 63) {
+ $ERROR('#139: 1023 >> 4 === 63. Actual: ' + (1023 >> 4));
+}
+
+
+if (2047 >> 4 !== 127) {
+ $ERROR('#140: 2047 >> 4 === 127. Actual: ' + (2047 >> 4));
+}
+
+
+if (4095 >> 4 !== 255) {
+ $ERROR('#141: 4095 >> 4 === 255. Actual: ' + (4095 >> 4));
+}
+
+
+if (8191 >> 4 !== 511) {
+ $ERROR('#142: 8191 >> 4 === 511. Actual: ' + (8191 >> 4));
+}
+
+
+if (16383 >> 4 !== 1023) {
+ $ERROR('#143: 16383 >> 4 === 1023. Actual: ' + (16383 >> 4));
+}
+
+
+if (32767 >> 4 !== 2047) {
+ $ERROR('#144: 32767 >> 4 === 2047. Actual: ' + (32767 >> 4));
+}
+
+
+if (65535 >> 4 !== 4095) {
+ $ERROR('#145: 65535 >> 4 === 4095. Actual: ' + (65535 >> 4));
+}
+
+
+if (131071 >> 4 !== 8191) {
+ $ERROR('#146: 131071 >> 4 === 8191. Actual: ' + (131071 >> 4));
+}
+
+
+if (262143 >> 4 !== 16383) {
+ $ERROR('#147: 262143 >> 4 === 16383. Actual: ' + (262143 >> 4));
+}
+
+
+if (524287 >> 4 !== 32767) {
+ $ERROR('#148: 524287 >> 4 === 32767. Actual: ' + (524287 >> 4));
+}
+
+
+if (1048575 >> 4 !== 65535) {
+ $ERROR('#149: 1048575 >> 4 === 65535. Actual: ' + (1048575 >> 4));
+}
+
+
+if (2097151 >> 4 !== 131071) {
+ $ERROR('#150: 2097151 >> 4 === 131071. Actual: ' + (2097151 >> 4));
+}
+
+
+if (4194303 >> 4 !== 262143) {
+ $ERROR('#151: 4194303 >> 4 === 262143. Actual: ' + (4194303 >> 4));
+}
+
+
+if (8388607 >> 4 !== 524287) {
+ $ERROR('#152: 8388607 >> 4 === 524287. Actual: ' + (8388607 >> 4));
+}
+
+
+if (16777215 >> 4 !== 1048575) {
+ $ERROR('#153: 16777215 >> 4 === 1048575. Actual: ' + (16777215 >> 4));
+}
+
+
+if (33554431 >> 4 !== 2097151) {
+ $ERROR('#154: 33554431 >> 4 === 2097151. Actual: ' + (33554431 >> 4));
+}
+
+
+if (67108863 >> 4 !== 4194303) {
+ $ERROR('#155: 67108863 >> 4 === 4194303. Actual: ' + (67108863 >> 4));
+}
+
+
+if (134217727 >> 4 !== 8388607) {
+ $ERROR('#156: 134217727 >> 4 === 8388607. Actual: ' + (134217727 >> 4));
+}
+
+
+if (268435455 >> 4 !== 16777215) {
+ $ERROR('#157: 268435455 >> 4 === 16777215. Actual: ' + (268435455 >> 4));
+}
+
+
+if (536870911 >> 4 !== 33554431) {
+ $ERROR('#158: 536870911 >> 4 === 33554431. Actual: ' + (536870911 >> 4));
+}
+
+
+if (1073741823 >> 4 !== 67108863) {
+ $ERROR('#159: 1073741823 >> 4 === 67108863. Actual: ' + (1073741823 >> 4));
+}
+
+
+if (2147483647 >> 4 !== 134217727) {
+ $ERROR('#160: 2147483647 >> 4 === 134217727. Actual: ' + (2147483647 >> 4));
+}
+
+
+if (0 >> 5 !== 0) {
+ $ERROR('#161: 0 >> 5 === 0. Actual: ' + (0 >> 5));
+}
+
+
+if (1 >> 5 !== 0) {
+ $ERROR('#162: 1 >> 5 === 0. Actual: ' + (1 >> 5));
+}
+
+
+if (3 >> 5 !== 0) {
+ $ERROR('#163: 3 >> 5 === 0. Actual: ' + (3 >> 5));
+}
+
+
+if (7 >> 5 !== 0) {
+ $ERROR('#164: 7 >> 5 === 0. Actual: ' + (7 >> 5));
+}
+
+
+if (15 >> 5 !== 0) {
+ $ERROR('#165: 15 >> 5 === 0. Actual: ' + (15 >> 5));
+}
+
+
+if (31 >> 5 !== 0) {
+ $ERROR('#166: 31 >> 5 === 0. Actual: ' + (31 >> 5));
+}
+
+
+if (63 >> 5 !== 1) {
+ $ERROR('#167: 63 >> 5 === 1. Actual: ' + (63 >> 5));
+}
+
+
+if (127 >> 5 !== 3) {
+ $ERROR('#168: 127 >> 5 === 3. Actual: ' + (127 >> 5));
+}
+
+
+if (255 >> 5 !== 7) {
+ $ERROR('#169: 255 >> 5 === 7. Actual: ' + (255 >> 5));
+}
+
+
+if (511 >> 5 !== 15) {
+ $ERROR('#170: 511 >> 5 === 15. Actual: ' + (511 >> 5));
+}
+
+
+if (1023 >> 5 !== 31) {
+ $ERROR('#171: 1023 >> 5 === 31. Actual: ' + (1023 >> 5));
+}
+
+
+if (2047 >> 5 !== 63) {
+ $ERROR('#172: 2047 >> 5 === 63. Actual: ' + (2047 >> 5));
+}
+
+
+if (4095 >> 5 !== 127) {
+ $ERROR('#173: 4095 >> 5 === 127. Actual: ' + (4095 >> 5));
+}
+
+
+if (8191 >> 5 !== 255) {
+ $ERROR('#174: 8191 >> 5 === 255. Actual: ' + (8191 >> 5));
+}
+
+
+if (16383 >> 5 !== 511) {
+ $ERROR('#175: 16383 >> 5 === 511. Actual: ' + (16383 >> 5));
+}
+
+
+if (32767 >> 5 !== 1023) {
+ $ERROR('#176: 32767 >> 5 === 1023. Actual: ' + (32767 >> 5));
+}
+
+
+if (65535 >> 5 !== 2047) {
+ $ERROR('#177: 65535 >> 5 === 2047. Actual: ' + (65535 >> 5));
+}
+
+
+if (131071 >> 5 !== 4095) {
+ $ERROR('#178: 131071 >> 5 === 4095. Actual: ' + (131071 >> 5));
+}
+
+
+if (262143 >> 5 !== 8191) {
+ $ERROR('#179: 262143 >> 5 === 8191. Actual: ' + (262143 >> 5));
+}
+
+
+if (524287 >> 5 !== 16383) {
+ $ERROR('#180: 524287 >> 5 === 16383. Actual: ' + (524287 >> 5));
+}
+
+
+if (1048575 >> 5 !== 32767) {
+ $ERROR('#181: 1048575 >> 5 === 32767. Actual: ' + (1048575 >> 5));
+}
+
+
+if (2097151 >> 5 !== 65535) {
+ $ERROR('#182: 2097151 >> 5 === 65535. Actual: ' + (2097151 >> 5));
+}
+
+
+if (4194303 >> 5 !== 131071) {
+ $ERROR('#183: 4194303 >> 5 === 131071. Actual: ' + (4194303 >> 5));
+}
+
+
+if (8388607 >> 5 !== 262143) {
+ $ERROR('#184: 8388607 >> 5 === 262143. Actual: ' + (8388607 >> 5));
+}
+
+
+if (16777215 >> 5 !== 524287) {
+ $ERROR('#185: 16777215 >> 5 === 524287. Actual: ' + (16777215 >> 5));
+}
+
+
+if (33554431 >> 5 !== 1048575) {
+ $ERROR('#186: 33554431 >> 5 === 1048575. Actual: ' + (33554431 >> 5));
+}
+
+
+if (67108863 >> 5 !== 2097151) {
+ $ERROR('#187: 67108863 >> 5 === 2097151. Actual: ' + (67108863 >> 5));
+}
+
+
+if (134217727 >> 5 !== 4194303) {
+ $ERROR('#188: 134217727 >> 5 === 4194303. Actual: ' + (134217727 >> 5));
+}
+
+
+if (268435455 >> 5 !== 8388607) {
+ $ERROR('#189: 268435455 >> 5 === 8388607. Actual: ' + (268435455 >> 5));
+}
+
+
+if (536870911 >> 5 !== 16777215) {
+ $ERROR('#190: 536870911 >> 5 === 16777215. Actual: ' + (536870911 >> 5));
+}
+
+
+if (1073741823 >> 5 !== 33554431) {
+ $ERROR('#191: 1073741823 >> 5 === 33554431. Actual: ' + (1073741823 >> 5));
+}
+
+
+if (2147483647 >> 5 !== 67108863) {
+ $ERROR('#192: 2147483647 >> 5 === 67108863. Actual: ' + (2147483647 >> 5));
+}
+
+
+if (0 >> 6 !== 0) {
+ $ERROR('#193: 0 >> 6 === 0. Actual: ' + (0 >> 6));
+}
+
+
+if (1 >> 6 !== 0) {
+ $ERROR('#194: 1 >> 6 === 0. Actual: ' + (1 >> 6));
+}
+
+
+if (3 >> 6 !== 0) {
+ $ERROR('#195: 3 >> 6 === 0. Actual: ' + (3 >> 6));
+}
+
+
+if (7 >> 6 !== 0) {
+ $ERROR('#196: 7 >> 6 === 0. Actual: ' + (7 >> 6));
+}
+
+
+if (15 >> 6 !== 0) {
+ $ERROR('#197: 15 >> 6 === 0. Actual: ' + (15 >> 6));
+}
+
+
+if (31 >> 6 !== 0) {
+ $ERROR('#198: 31 >> 6 === 0. Actual: ' + (31 >> 6));
+}
+
+
+if (63 >> 6 !== 0) {
+ $ERROR('#199: 63 >> 6 === 0. Actual: ' + (63 >> 6));
+}
+
+
+if (127 >> 6 !== 1) {
+ $ERROR('#200: 127 >> 6 === 1. Actual: ' + (127 >> 6));
+}
+
+
+if (255 >> 6 !== 3) {
+ $ERROR('#201: 255 >> 6 === 3. Actual: ' + (255 >> 6));
+}
+
+
+if (511 >> 6 !== 7) {
+ $ERROR('#202: 511 >> 6 === 7. Actual: ' + (511 >> 6));
+}
+
+
+if (1023 >> 6 !== 15) {
+ $ERROR('#203: 1023 >> 6 === 15. Actual: ' + (1023 >> 6));
+}
+
+
+if (2047 >> 6 !== 31) {
+ $ERROR('#204: 2047 >> 6 === 31. Actual: ' + (2047 >> 6));
+}
+
+
+if (4095 >> 6 !== 63) {
+ $ERROR('#205: 4095 >> 6 === 63. Actual: ' + (4095 >> 6));
+}
+
+
+if (8191 >> 6 !== 127) {
+ $ERROR('#206: 8191 >> 6 === 127. Actual: ' + (8191 >> 6));
+}
+
+
+if (16383 >> 6 !== 255) {
+ $ERROR('#207: 16383 >> 6 === 255. Actual: ' + (16383 >> 6));
+}
+
+
+if (32767 >> 6 !== 511) {
+ $ERROR('#208: 32767 >> 6 === 511. Actual: ' + (32767 >> 6));
+}
+
+
+if (65535 >> 6 !== 1023) {
+ $ERROR('#209: 65535 >> 6 === 1023. Actual: ' + (65535 >> 6));
+}
+
+
+if (131071 >> 6 !== 2047) {
+ $ERROR('#210: 131071 >> 6 === 2047. Actual: ' + (131071 >> 6));
+}
+
+
+if (262143 >> 6 !== 4095) {
+ $ERROR('#211: 262143 >> 6 === 4095. Actual: ' + (262143 >> 6));
+}
+
+
+if (524287 >> 6 !== 8191) {
+ $ERROR('#212: 524287 >> 6 === 8191. Actual: ' + (524287 >> 6));
+}
+
+
+if (1048575 >> 6 !== 16383) {
+ $ERROR('#213: 1048575 >> 6 === 16383. Actual: ' + (1048575 >> 6));
+}
+
+
+if (2097151 >> 6 !== 32767) {
+ $ERROR('#214: 2097151 >> 6 === 32767. Actual: ' + (2097151 >> 6));
+}
+
+
+if (4194303 >> 6 !== 65535) {
+ $ERROR('#215: 4194303 >> 6 === 65535. Actual: ' + (4194303 >> 6));
+}
+
+
+if (8388607 >> 6 !== 131071) {
+ $ERROR('#216: 8388607 >> 6 === 131071. Actual: ' + (8388607 >> 6));
+}
+
+
+if (16777215 >> 6 !== 262143) {
+ $ERROR('#217: 16777215 >> 6 === 262143. Actual: ' + (16777215 >> 6));
+}
+
+
+if (33554431 >> 6 !== 524287) {
+ $ERROR('#218: 33554431 >> 6 === 524287. Actual: ' + (33554431 >> 6));
+}
+
+
+if (67108863 >> 6 !== 1048575) {
+ $ERROR('#219: 67108863 >> 6 === 1048575. Actual: ' + (67108863 >> 6));
+}
+
+
+if (134217727 >> 6 !== 2097151) {
+ $ERROR('#220: 134217727 >> 6 === 2097151. Actual: ' + (134217727 >> 6));
+}
+
+
+if (268435455 >> 6 !== 4194303) {
+ $ERROR('#221: 268435455 >> 6 === 4194303. Actual: ' + (268435455 >> 6));
+}
+
+
+if (536870911 >> 6 !== 8388607) {
+ $ERROR('#222: 536870911 >> 6 === 8388607. Actual: ' + (536870911 >> 6));
+}
+
+
+if (1073741823 >> 6 !== 16777215) {
+ $ERROR('#223: 1073741823 >> 6 === 16777215. Actual: ' + (1073741823 >> 6));
+}
+
+
+if (2147483647 >> 6 !== 33554431) {
+ $ERROR('#224: 2147483647 >> 6 === 33554431. Actual: ' + (2147483647 >> 6));
+}
+
+
+if (0 >> 7 !== 0) {
+ $ERROR('#225: 0 >> 7 === 0. Actual: ' + (0 >> 7));
+}
+
+
+if (1 >> 7 !== 0) {
+ $ERROR('#226: 1 >> 7 === 0. Actual: ' + (1 >> 7));
+}
+
+
+if (3 >> 7 !== 0) {
+ $ERROR('#227: 3 >> 7 === 0. Actual: ' + (3 >> 7));
+}
+
+
+if (7 >> 7 !== 0) {
+ $ERROR('#228: 7 >> 7 === 0. Actual: ' + (7 >> 7));
+}
+
+
+if (15 >> 7 !== 0) {
+ $ERROR('#229: 15 >> 7 === 0. Actual: ' + (15 >> 7));
+}
+
+
+if (31 >> 7 !== 0) {
+ $ERROR('#230: 31 >> 7 === 0. Actual: ' + (31 >> 7));
+}
+
+
+if (63 >> 7 !== 0) {
+ $ERROR('#231: 63 >> 7 === 0. Actual: ' + (63 >> 7));
+}
+
+
+if (127 >> 7 !== 0) {
+ $ERROR('#232: 127 >> 7 === 0. Actual: ' + (127 >> 7));
+}
+
+
+if (255 >> 7 !== 1) {
+ $ERROR('#233: 255 >> 7 === 1. Actual: ' + (255 >> 7));
+}
+
+
+if (511 >> 7 !== 3) {
+ $ERROR('#234: 511 >> 7 === 3. Actual: ' + (511 >> 7));
+}
+
+
+if (1023 >> 7 !== 7) {
+ $ERROR('#235: 1023 >> 7 === 7. Actual: ' + (1023 >> 7));
+}
+
+
+if (2047 >> 7 !== 15) {
+ $ERROR('#236: 2047 >> 7 === 15. Actual: ' + (2047 >> 7));
+}
+
+
+if (4095 >> 7 !== 31) {
+ $ERROR('#237: 4095 >> 7 === 31. Actual: ' + (4095 >> 7));
+}
+
+
+if (8191 >> 7 !== 63) {
+ $ERROR('#238: 8191 >> 7 === 63. Actual: ' + (8191 >> 7));
+}
+
+
+if (16383 >> 7 !== 127) {
+ $ERROR('#239: 16383 >> 7 === 127. Actual: ' + (16383 >> 7));
+}
+
+
+if (32767 >> 7 !== 255) {
+ $ERROR('#240: 32767 >> 7 === 255. Actual: ' + (32767 >> 7));
+}
+
+
+if (65535 >> 7 !== 511) {
+ $ERROR('#241: 65535 >> 7 === 511. Actual: ' + (65535 >> 7));
+}
+
+
+if (131071 >> 7 !== 1023) {
+ $ERROR('#242: 131071 >> 7 === 1023. Actual: ' + (131071 >> 7));
+}
+
+
+if (262143 >> 7 !== 2047) {
+ $ERROR('#243: 262143 >> 7 === 2047. Actual: ' + (262143 >> 7));
+}
+
+
+if (524287 >> 7 !== 4095) {
+ $ERROR('#244: 524287 >> 7 === 4095. Actual: ' + (524287 >> 7));
+}
+
+
+if (1048575 >> 7 !== 8191) {
+ $ERROR('#245: 1048575 >> 7 === 8191. Actual: ' + (1048575 >> 7));
+}
+
+
+if (2097151 >> 7 !== 16383) {
+ $ERROR('#246: 2097151 >> 7 === 16383. Actual: ' + (2097151 >> 7));
+}
+
+
+if (4194303 >> 7 !== 32767) {
+ $ERROR('#247: 4194303 >> 7 === 32767. Actual: ' + (4194303 >> 7));
+}
+
+
+if (8388607 >> 7 !== 65535) {
+ $ERROR('#248: 8388607 >> 7 === 65535. Actual: ' + (8388607 >> 7));
+}
+
+
+if (16777215 >> 7 !== 131071) {
+ $ERROR('#249: 16777215 >> 7 === 131071. Actual: ' + (16777215 >> 7));
+}
+
+
+if (33554431 >> 7 !== 262143) {
+ $ERROR('#250: 33554431 >> 7 === 262143. Actual: ' + (33554431 >> 7));
+}
+
+
+if (67108863 >> 7 !== 524287) {
+ $ERROR('#251: 67108863 >> 7 === 524287. Actual: ' + (67108863 >> 7));
+}
+
+
+if (134217727 >> 7 !== 1048575) {
+ $ERROR('#252: 134217727 >> 7 === 1048575. Actual: ' + (134217727 >> 7));
+}
+
+
+if (268435455 >> 7 !== 2097151) {
+ $ERROR('#253: 268435455 >> 7 === 2097151. Actual: ' + (268435455 >> 7));
+}
+
+
+if (536870911 >> 7 !== 4194303) {
+ $ERROR('#254: 536870911 >> 7 === 4194303. Actual: ' + (536870911 >> 7));
+}
+
+
+if (1073741823 >> 7 !== 8388607) {
+ $ERROR('#255: 1073741823 >> 7 === 8388607. Actual: ' + (1073741823 >> 7));
+}
+
+
+if (2147483647 >> 7 !== 16777215) {
+ $ERROR('#256: 2147483647 >> 7 === 16777215. Actual: ' + (2147483647 >> 7));
+}
+
+
+if (0 >> 8 !== 0) {
+ $ERROR('#257: 0 >> 8 === 0. Actual: ' + (0 >> 8));
+}
+
+
+if (1 >> 8 !== 0) {
+ $ERROR('#258: 1 >> 8 === 0. Actual: ' + (1 >> 8));
+}
+
+
+if (3 >> 8 !== 0) {
+ $ERROR('#259: 3 >> 8 === 0. Actual: ' + (3 >> 8));
+}
+
+
+if (7 >> 8 !== 0) {
+ $ERROR('#260: 7 >> 8 === 0. Actual: ' + (7 >> 8));
+}
+
+
+if (15 >> 8 !== 0) {
+ $ERROR('#261: 15 >> 8 === 0. Actual: ' + (15 >> 8));
+}
+
+
+if (31 >> 8 !== 0) {
+ $ERROR('#262: 31 >> 8 === 0. Actual: ' + (31 >> 8));
+}
+
+
+if (63 >> 8 !== 0) {
+ $ERROR('#263: 63 >> 8 === 0. Actual: ' + (63 >> 8));
+}
+
+
+if (127 >> 8 !== 0) {
+ $ERROR('#264: 127 >> 8 === 0. Actual: ' + (127 >> 8));
+}
+
+
+if (255 >> 8 !== 0) {
+ $ERROR('#265: 255 >> 8 === 0. Actual: ' + (255 >> 8));
+}
+
+
+if (511 >> 8 !== 1) {
+ $ERROR('#266: 511 >> 8 === 1. Actual: ' + (511 >> 8));
+}
+
+
+if (1023 >> 8 !== 3) {
+ $ERROR('#267: 1023 >> 8 === 3. Actual: ' + (1023 >> 8));
+}
+
+
+if (2047 >> 8 !== 7) {
+ $ERROR('#268: 2047 >> 8 === 7. Actual: ' + (2047 >> 8));
+}
+
+
+if (4095 >> 8 !== 15) {
+ $ERROR('#269: 4095 >> 8 === 15. Actual: ' + (4095 >> 8));
+}
+
+
+if (8191 >> 8 !== 31) {
+ $ERROR('#270: 8191 >> 8 === 31. Actual: ' + (8191 >> 8));
+}
+
+
+if (16383 >> 8 !== 63) {
+ $ERROR('#271: 16383 >> 8 === 63. Actual: ' + (16383 >> 8));
+}
+
+
+if (32767 >> 8 !== 127) {
+ $ERROR('#272: 32767 >> 8 === 127. Actual: ' + (32767 >> 8));
+}
+
+
+if (65535 >> 8 !== 255) {
+ $ERROR('#273: 65535 >> 8 === 255. Actual: ' + (65535 >> 8));
+}
+
+
+if (131071 >> 8 !== 511) {
+ $ERROR('#274: 131071 >> 8 === 511. Actual: ' + (131071 >> 8));
+}
+
+
+if (262143 >> 8 !== 1023) {
+ $ERROR('#275: 262143 >> 8 === 1023. Actual: ' + (262143 >> 8));
+}
+
+
+if (524287 >> 8 !== 2047) {
+ $ERROR('#276: 524287 >> 8 === 2047. Actual: ' + (524287 >> 8));
+}
+
+
+if (1048575 >> 8 !== 4095) {
+ $ERROR('#277: 1048575 >> 8 === 4095. Actual: ' + (1048575 >> 8));
+}
+
+
+if (2097151 >> 8 !== 8191) {
+ $ERROR('#278: 2097151 >> 8 === 8191. Actual: ' + (2097151 >> 8));
+}
+
+
+if (4194303 >> 8 !== 16383) {
+ $ERROR('#279: 4194303 >> 8 === 16383. Actual: ' + (4194303 >> 8));
+}
+
+
+if (8388607 >> 8 !== 32767) {
+ $ERROR('#280: 8388607 >> 8 === 32767. Actual: ' + (8388607 >> 8));
+}
+
+
+if (16777215 >> 8 !== 65535) {
+ $ERROR('#281: 16777215 >> 8 === 65535. Actual: ' + (16777215 >> 8));
+}
+
+
+if (33554431 >> 8 !== 131071) {
+ $ERROR('#282: 33554431 >> 8 === 131071. Actual: ' + (33554431 >> 8));
+}
+
+
+if (67108863 >> 8 !== 262143) {
+ $ERROR('#283: 67108863 >> 8 === 262143. Actual: ' + (67108863 >> 8));
+}
+
+
+if (134217727 >> 8 !== 524287) {
+ $ERROR('#284: 134217727 >> 8 === 524287. Actual: ' + (134217727 >> 8));
+}
+
+
+if (268435455 >> 8 !== 1048575) {
+ $ERROR('#285: 268435455 >> 8 === 1048575. Actual: ' + (268435455 >> 8));
+}
+
+
+if (536870911 >> 8 !== 2097151) {
+ $ERROR('#286: 536870911 >> 8 === 2097151. Actual: ' + (536870911 >> 8));
+}
+
+
+if (1073741823 >> 8 !== 4194303) {
+ $ERROR('#287: 1073741823 >> 8 === 4194303. Actual: ' + (1073741823 >> 8));
+}
+
+
+if (2147483647 >> 8 !== 8388607) {
+ $ERROR('#288: 2147483647 >> 8 === 8388607. Actual: ' + (2147483647 >> 8));
+}
+
+
+if (0 >> 9 !== 0) {
+ $ERROR('#289: 0 >> 9 === 0. Actual: ' + (0 >> 9));
+}
+
+
+if (1 >> 9 !== 0) {
+ $ERROR('#290: 1 >> 9 === 0. Actual: ' + (1 >> 9));
+}
+
+
+if (3 >> 9 !== 0) {
+ $ERROR('#291: 3 >> 9 === 0. Actual: ' + (3 >> 9));
+}
+
+
+if (7 >> 9 !== 0) {
+ $ERROR('#292: 7 >> 9 === 0. Actual: ' + (7 >> 9));
+}
+
+
+if (15 >> 9 !== 0) {
+ $ERROR('#293: 15 >> 9 === 0. Actual: ' + (15 >> 9));
+}
+
+
+if (31 >> 9 !== 0) {
+ $ERROR('#294: 31 >> 9 === 0. Actual: ' + (31 >> 9));
+}
+
+
+if (63 >> 9 !== 0) {
+ $ERROR('#295: 63 >> 9 === 0. Actual: ' + (63 >> 9));
+}
+
+
+if (127 >> 9 !== 0) {
+ $ERROR('#296: 127 >> 9 === 0. Actual: ' + (127 >> 9));
+}
+
+
+if (255 >> 9 !== 0) {
+ $ERROR('#297: 255 >> 9 === 0. Actual: ' + (255 >> 9));
+}
+
+
+if (511 >> 9 !== 0) {
+ $ERROR('#298: 511 >> 9 === 0. Actual: ' + (511 >> 9));
+}
+
+
+if (1023 >> 9 !== 1) {
+ $ERROR('#299: 1023 >> 9 === 1. Actual: ' + (1023 >> 9));
+}
+
+
+if (2047 >> 9 !== 3) {
+ $ERROR('#300: 2047 >> 9 === 3. Actual: ' + (2047 >> 9));
+}
+
+
+if (4095 >> 9 !== 7) {
+ $ERROR('#301: 4095 >> 9 === 7. Actual: ' + (4095 >> 9));
+}
+
+
+if (8191 >> 9 !== 15) {
+ $ERROR('#302: 8191 >> 9 === 15. Actual: ' + (8191 >> 9));
+}
+
+
+if (16383 >> 9 !== 31) {
+ $ERROR('#303: 16383 >> 9 === 31. Actual: ' + (16383 >> 9));
+}
+
+
+if (32767 >> 9 !== 63) {
+ $ERROR('#304: 32767 >> 9 === 63. Actual: ' + (32767 >> 9));
+}
+
+
+if (65535 >> 9 !== 127) {
+ $ERROR('#305: 65535 >> 9 === 127. Actual: ' + (65535 >> 9));
+}
+
+
+if (131071 >> 9 !== 255) {
+ $ERROR('#306: 131071 >> 9 === 255. Actual: ' + (131071 >> 9));
+}
+
+
+if (262143 >> 9 !== 511) {
+ $ERROR('#307: 262143 >> 9 === 511. Actual: ' + (262143 >> 9));
+}
+
+
+if (524287 >> 9 !== 1023) {
+ $ERROR('#308: 524287 >> 9 === 1023. Actual: ' + (524287 >> 9));
+}
+
+
+if (1048575 >> 9 !== 2047) {
+ $ERROR('#309: 1048575 >> 9 === 2047. Actual: ' + (1048575 >> 9));
+}
+
+
+if (2097151 >> 9 !== 4095) {
+ $ERROR('#310: 2097151 >> 9 === 4095. Actual: ' + (2097151 >> 9));
+}
+
+
+if (4194303 >> 9 !== 8191) {
+ $ERROR('#311: 4194303 >> 9 === 8191. Actual: ' + (4194303 >> 9));
+}
+
+
+if (8388607 >> 9 !== 16383) {
+ $ERROR('#312: 8388607 >> 9 === 16383. Actual: ' + (8388607 >> 9));
+}
+
+
+if (16777215 >> 9 !== 32767) {
+ $ERROR('#313: 16777215 >> 9 === 32767. Actual: ' + (16777215 >> 9));
+}
+
+
+if (33554431 >> 9 !== 65535) {
+ $ERROR('#314: 33554431 >> 9 === 65535. Actual: ' + (33554431 >> 9));
+}
+
+
+if (67108863 >> 9 !== 131071) {
+ $ERROR('#315: 67108863 >> 9 === 131071. Actual: ' + (67108863 >> 9));
+}
+
+
+if (134217727 >> 9 !== 262143) {
+ $ERROR('#316: 134217727 >> 9 === 262143. Actual: ' + (134217727 >> 9));
+}
+
+
+if (268435455 >> 9 !== 524287) {
+ $ERROR('#317: 268435455 >> 9 === 524287. Actual: ' + (268435455 >> 9));
+}
+
+
+if (536870911 >> 9 !== 1048575) {
+ $ERROR('#318: 536870911 >> 9 === 1048575. Actual: ' + (536870911 >> 9));
+}
+
+
+if (1073741823 >> 9 !== 2097151) {
+ $ERROR('#319: 1073741823 >> 9 === 2097151. Actual: ' + (1073741823 >> 9));
+}
+
+
+if (2147483647 >> 9 !== 4194303) {
+ $ERROR('#320: 2147483647 >> 9 === 4194303. Actual: ' + (2147483647 >> 9));
+}
+
+
+if (0 >> 10 !== 0) {
+ $ERROR('#321: 0 >> 10 === 0. Actual: ' + (0 >> 10));
+}
+
+
+if (1 >> 10 !== 0) {
+ $ERROR('#322: 1 >> 10 === 0. Actual: ' + (1 >> 10));
+}
+
+
+if (3 >> 10 !== 0) {
+ $ERROR('#323: 3 >> 10 === 0. Actual: ' + (3 >> 10));
+}
+
+
+if (7 >> 10 !== 0) {
+ $ERROR('#324: 7 >> 10 === 0. Actual: ' + (7 >> 10));
+}
+
+
+if (15 >> 10 !== 0) {
+ $ERROR('#325: 15 >> 10 === 0. Actual: ' + (15 >> 10));
+}
+
+
+if (31 >> 10 !== 0) {
+ $ERROR('#326: 31 >> 10 === 0. Actual: ' + (31 >> 10));
+}
+
+
+if (63 >> 10 !== 0) {
+ $ERROR('#327: 63 >> 10 === 0. Actual: ' + (63 >> 10));
+}
+
+
+if (127 >> 10 !== 0) {
+ $ERROR('#328: 127 >> 10 === 0. Actual: ' + (127 >> 10));
+}
+
+
+if (255 >> 10 !== 0) {
+ $ERROR('#329: 255 >> 10 === 0. Actual: ' + (255 >> 10));
+}
+
+
+if (511 >> 10 !== 0) {
+ $ERROR('#330: 511 >> 10 === 0. Actual: ' + (511 >> 10));
+}
+
+
+if (1023 >> 10 !== 0) {
+ $ERROR('#331: 1023 >> 10 === 0. Actual: ' + (1023 >> 10));
+}
+
+
+if (2047 >> 10 !== 1) {
+ $ERROR('#332: 2047 >> 10 === 1. Actual: ' + (2047 >> 10));
+}
+
+
+if (4095 >> 10 !== 3) {
+ $ERROR('#333: 4095 >> 10 === 3. Actual: ' + (4095 >> 10));
+}
+
+
+if (8191 >> 10 !== 7) {
+ $ERROR('#334: 8191 >> 10 === 7. Actual: ' + (8191 >> 10));
+}
+
+
+if (16383 >> 10 !== 15) {
+ $ERROR('#335: 16383 >> 10 === 15. Actual: ' + (16383 >> 10));
+}
+
+
+if (32767 >> 10 !== 31) {
+ $ERROR('#336: 32767 >> 10 === 31. Actual: ' + (32767 >> 10));
+}
+
+
+if (65535 >> 10 !== 63) {
+ $ERROR('#337: 65535 >> 10 === 63. Actual: ' + (65535 >> 10));
+}
+
+
+if (131071 >> 10 !== 127) {
+ $ERROR('#338: 131071 >> 10 === 127. Actual: ' + (131071 >> 10));
+}
+
+
+if (262143 >> 10 !== 255) {
+ $ERROR('#339: 262143 >> 10 === 255. Actual: ' + (262143 >> 10));
+}
+
+
+if (524287 >> 10 !== 511) {
+ $ERROR('#340: 524287 >> 10 === 511. Actual: ' + (524287 >> 10));
+}
+
+
+if (1048575 >> 10 !== 1023) {
+ $ERROR('#341: 1048575 >> 10 === 1023. Actual: ' + (1048575 >> 10));
+}
+
+
+if (2097151 >> 10 !== 2047) {
+ $ERROR('#342: 2097151 >> 10 === 2047. Actual: ' + (2097151 >> 10));
+}
+
+
+if (4194303 >> 10 !== 4095) {
+ $ERROR('#343: 4194303 >> 10 === 4095. Actual: ' + (4194303 >> 10));
+}
+
+
+if (8388607 >> 10 !== 8191) {
+ $ERROR('#344: 8388607 >> 10 === 8191. Actual: ' + (8388607 >> 10));
+}
+
+
+if (16777215 >> 10 !== 16383) {
+ $ERROR('#345: 16777215 >> 10 === 16383. Actual: ' + (16777215 >> 10));
+}
+
+
+if (33554431 >> 10 !== 32767) {
+ $ERROR('#346: 33554431 >> 10 === 32767. Actual: ' + (33554431 >> 10));
+}
+
+
+if (67108863 >> 10 !== 65535) {
+ $ERROR('#347: 67108863 >> 10 === 65535. Actual: ' + (67108863 >> 10));
+}
+
+
+if (134217727 >> 10 !== 131071) {
+ $ERROR('#348: 134217727 >> 10 === 131071. Actual: ' + (134217727 >> 10));
+}
+
+
+if (268435455 >> 10 !== 262143) {
+ $ERROR('#349: 268435455 >> 10 === 262143. Actual: ' + (268435455 >> 10));
+}
+
+
+if (536870911 >> 10 !== 524287) {
+ $ERROR('#350: 536870911 >> 10 === 524287. Actual: ' + (536870911 >> 10));
+}
+
+
+if (1073741823 >> 10 !== 1048575) {
+ $ERROR('#351: 1073741823 >> 10 === 1048575. Actual: ' + (1073741823 >> 10));
+}
+
+
+if (2147483647 >> 10 !== 2097151) {
+ $ERROR('#352: 2147483647 >> 10 === 2097151. Actual: ' + (2147483647 >> 10));
+}
+
+
+if (0 >> 11 !== 0) {
+ $ERROR('#353: 0 >> 11 === 0. Actual: ' + (0 >> 11));
+}
+
+
+if (1 >> 11 !== 0) {
+ $ERROR('#354: 1 >> 11 === 0. Actual: ' + (1 >> 11));
+}
+
+
+if (3 >> 11 !== 0) {
+ $ERROR('#355: 3 >> 11 === 0. Actual: ' + (3 >> 11));
+}
+
+
+if (7 >> 11 !== 0) {
+ $ERROR('#356: 7 >> 11 === 0. Actual: ' + (7 >> 11));
+}
+
+
+if (15 >> 11 !== 0) {
+ $ERROR('#357: 15 >> 11 === 0. Actual: ' + (15 >> 11));
+}
+
+
+if (31 >> 11 !== 0) {
+ $ERROR('#358: 31 >> 11 === 0. Actual: ' + (31 >> 11));
+}
+
+
+if (63 >> 11 !== 0) {
+ $ERROR('#359: 63 >> 11 === 0. Actual: ' + (63 >> 11));
+}
+
+
+if (127 >> 11 !== 0) {
+ $ERROR('#360: 127 >> 11 === 0. Actual: ' + (127 >> 11));
+}
+
+
+if (255 >> 11 !== 0) {
+ $ERROR('#361: 255 >> 11 === 0. Actual: ' + (255 >> 11));
+}
+
+
+if (511 >> 11 !== 0) {
+ $ERROR('#362: 511 >> 11 === 0. Actual: ' + (511 >> 11));
+}
+
+
+if (1023 >> 11 !== 0) {
+ $ERROR('#363: 1023 >> 11 === 0. Actual: ' + (1023 >> 11));
+}
+
+
+if (2047 >> 11 !== 0) {
+ $ERROR('#364: 2047 >> 11 === 0. Actual: ' + (2047 >> 11));
+}
+
+
+if (4095 >> 11 !== 1) {
+ $ERROR('#365: 4095 >> 11 === 1. Actual: ' + (4095 >> 11));
+}
+
+
+if (8191 >> 11 !== 3) {
+ $ERROR('#366: 8191 >> 11 === 3. Actual: ' + (8191 >> 11));
+}
+
+
+if (16383 >> 11 !== 7) {
+ $ERROR('#367: 16383 >> 11 === 7. Actual: ' + (16383 >> 11));
+}
+
+
+if (32767 >> 11 !== 15) {
+ $ERROR('#368: 32767 >> 11 === 15. Actual: ' + (32767 >> 11));
+}
+
+
+if (65535 >> 11 !== 31) {
+ $ERROR('#369: 65535 >> 11 === 31. Actual: ' + (65535 >> 11));
+}
+
+
+if (131071 >> 11 !== 63) {
+ $ERROR('#370: 131071 >> 11 === 63. Actual: ' + (131071 >> 11));
+}
+
+
+if (262143 >> 11 !== 127) {
+ $ERROR('#371: 262143 >> 11 === 127. Actual: ' + (262143 >> 11));
+}
+
+
+if (524287 >> 11 !== 255) {
+ $ERROR('#372: 524287 >> 11 === 255. Actual: ' + (524287 >> 11));
+}
+
+
+if (1048575 >> 11 !== 511) {
+ $ERROR('#373: 1048575 >> 11 === 511. Actual: ' + (1048575 >> 11));
+}
+
+
+if (2097151 >> 11 !== 1023) {
+ $ERROR('#374: 2097151 >> 11 === 1023. Actual: ' + (2097151 >> 11));
+}
+
+
+if (4194303 >> 11 !== 2047) {
+ $ERROR('#375: 4194303 >> 11 === 2047. Actual: ' + (4194303 >> 11));
+}
+
+
+if (8388607 >> 11 !== 4095) {
+ $ERROR('#376: 8388607 >> 11 === 4095. Actual: ' + (8388607 >> 11));
+}
+
+
+if (16777215 >> 11 !== 8191) {
+ $ERROR('#377: 16777215 >> 11 === 8191. Actual: ' + (16777215 >> 11));
+}
+
+
+if (33554431 >> 11 !== 16383) {
+ $ERROR('#378: 33554431 >> 11 === 16383. Actual: ' + (33554431 >> 11));
+}
+
+
+if (67108863 >> 11 !== 32767) {
+ $ERROR('#379: 67108863 >> 11 === 32767. Actual: ' + (67108863 >> 11));
+}
+
+
+if (134217727 >> 11 !== 65535) {
+ $ERROR('#380: 134217727 >> 11 === 65535. Actual: ' + (134217727 >> 11));
+}
+
+
+if (268435455 >> 11 !== 131071) {
+ $ERROR('#381: 268435455 >> 11 === 131071. Actual: ' + (268435455 >> 11));
+}
+
+
+if (536870911 >> 11 !== 262143) {
+ $ERROR('#382: 536870911 >> 11 === 262143. Actual: ' + (536870911 >> 11));
+}
+
+
+if (1073741823 >> 11 !== 524287) {
+ $ERROR('#383: 1073741823 >> 11 === 524287. Actual: ' + (1073741823 >> 11));
+}
+
+
+if (2147483647 >> 11 !== 1048575) {
+ $ERROR('#384: 2147483647 >> 11 === 1048575. Actual: ' + (2147483647 >> 11));
+}
+
+
+if (0 >> 12 !== 0) {
+ $ERROR('#385: 0 >> 12 === 0. Actual: ' + (0 >> 12));
+}
+
+
+if (1 >> 12 !== 0) {
+ $ERROR('#386: 1 >> 12 === 0. Actual: ' + (1 >> 12));
+}
+
+
+if (3 >> 12 !== 0) {
+ $ERROR('#387: 3 >> 12 === 0. Actual: ' + (3 >> 12));
+}
+
+
+if (7 >> 12 !== 0) {
+ $ERROR('#388: 7 >> 12 === 0. Actual: ' + (7 >> 12));
+}
+
+
+if (15 >> 12 !== 0) {
+ $ERROR('#389: 15 >> 12 === 0. Actual: ' + (15 >> 12));
+}
+
+
+if (31 >> 12 !== 0) {
+ $ERROR('#390: 31 >> 12 === 0. Actual: ' + (31 >> 12));
+}
+
+
+if (63 >> 12 !== 0) {
+ $ERROR('#391: 63 >> 12 === 0. Actual: ' + (63 >> 12));
+}
+
+
+if (127 >> 12 !== 0) {
+ $ERROR('#392: 127 >> 12 === 0. Actual: ' + (127 >> 12));
+}
+
+
+if (255 >> 12 !== 0) {
+ $ERROR('#393: 255 >> 12 === 0. Actual: ' + (255 >> 12));
+}
+
+
+if (511 >> 12 !== 0) {
+ $ERROR('#394: 511 >> 12 === 0. Actual: ' + (511 >> 12));
+}
+
+
+if (1023 >> 12 !== 0) {
+ $ERROR('#395: 1023 >> 12 === 0. Actual: ' + (1023 >> 12));
+}
+
+
+if (2047 >> 12 !== 0) {
+ $ERROR('#396: 2047 >> 12 === 0. Actual: ' + (2047 >> 12));
+}
+
+
+if (4095 >> 12 !== 0) {
+ $ERROR('#397: 4095 >> 12 === 0. Actual: ' + (4095 >> 12));
+}
+
+
+if (8191 >> 12 !== 1) {
+ $ERROR('#398: 8191 >> 12 === 1. Actual: ' + (8191 >> 12));
+}
+
+
+if (16383 >> 12 !== 3) {
+ $ERROR('#399: 16383 >> 12 === 3. Actual: ' + (16383 >> 12));
+}
+
+
+if (32767 >> 12 !== 7) {
+ $ERROR('#400: 32767 >> 12 === 7. Actual: ' + (32767 >> 12));
+}
+
+
+if (65535 >> 12 !== 15) {
+ $ERROR('#401: 65535 >> 12 === 15. Actual: ' + (65535 >> 12));
+}
+
+
+if (131071 >> 12 !== 31) {
+ $ERROR('#402: 131071 >> 12 === 31. Actual: ' + (131071 >> 12));
+}
+
+
+if (262143 >> 12 !== 63) {
+ $ERROR('#403: 262143 >> 12 === 63. Actual: ' + (262143 >> 12));
+}
+
+
+if (524287 >> 12 !== 127) {
+ $ERROR('#404: 524287 >> 12 === 127. Actual: ' + (524287 >> 12));
+}
+
+
+if (1048575 >> 12 !== 255) {
+ $ERROR('#405: 1048575 >> 12 === 255. Actual: ' + (1048575 >> 12));
+}
+
+
+if (2097151 >> 12 !== 511) {
+ $ERROR('#406: 2097151 >> 12 === 511. Actual: ' + (2097151 >> 12));
+}
+
+
+if (4194303 >> 12 !== 1023) {
+ $ERROR('#407: 4194303 >> 12 === 1023. Actual: ' + (4194303 >> 12));
+}
+
+
+if (8388607 >> 12 !== 2047) {
+ $ERROR('#408: 8388607 >> 12 === 2047. Actual: ' + (8388607 >> 12));
+}
+
+
+if (16777215 >> 12 !== 4095) {
+ $ERROR('#409: 16777215 >> 12 === 4095. Actual: ' + (16777215 >> 12));
+}
+
+
+if (33554431 >> 12 !== 8191) {
+ $ERROR('#410: 33554431 >> 12 === 8191. Actual: ' + (33554431 >> 12));
+}
+
+
+if (67108863 >> 12 !== 16383) {
+ $ERROR('#411: 67108863 >> 12 === 16383. Actual: ' + (67108863 >> 12));
+}
+
+
+if (134217727 >> 12 !== 32767) {
+ $ERROR('#412: 134217727 >> 12 === 32767. Actual: ' + (134217727 >> 12));
+}
+
+
+if (268435455 >> 12 !== 65535) {
+ $ERROR('#413: 268435455 >> 12 === 65535. Actual: ' + (268435455 >> 12));
+}
+
+
+if (536870911 >> 12 !== 131071) {
+ $ERROR('#414: 536870911 >> 12 === 131071. Actual: ' + (536870911 >> 12));
+}
+
+
+if (1073741823 >> 12 !== 262143) {
+ $ERROR('#415: 1073741823 >> 12 === 262143. Actual: ' + (1073741823 >> 12));
+}
+
+
+if (2147483647 >> 12 !== 524287) {
+ $ERROR('#416: 2147483647 >> 12 === 524287. Actual: ' + (2147483647 >> 12));
+}
+
+
+if (0 >> 13 !== 0) {
+ $ERROR('#417: 0 >> 13 === 0. Actual: ' + (0 >> 13));
+}
+
+
+if (1 >> 13 !== 0) {
+ $ERROR('#418: 1 >> 13 === 0. Actual: ' + (1 >> 13));
+}
+
+
+if (3 >> 13 !== 0) {
+ $ERROR('#419: 3 >> 13 === 0. Actual: ' + (3 >> 13));
+}
+
+
+if (7 >> 13 !== 0) {
+ $ERROR('#420: 7 >> 13 === 0. Actual: ' + (7 >> 13));
+}
+
+
+if (15 >> 13 !== 0) {
+ $ERROR('#421: 15 >> 13 === 0. Actual: ' + (15 >> 13));
+}
+
+
+if (31 >> 13 !== 0) {
+ $ERROR('#422: 31 >> 13 === 0. Actual: ' + (31 >> 13));
+}
+
+
+if (63 >> 13 !== 0) {
+ $ERROR('#423: 63 >> 13 === 0. Actual: ' + (63 >> 13));
+}
+
+
+if (127 >> 13 !== 0) {
+ $ERROR('#424: 127 >> 13 === 0. Actual: ' + (127 >> 13));
+}
+
+
+if (255 >> 13 !== 0) {
+ $ERROR('#425: 255 >> 13 === 0. Actual: ' + (255 >> 13));
+}
+
+
+if (511 >> 13 !== 0) {
+ $ERROR('#426: 511 >> 13 === 0. Actual: ' + (511 >> 13));
+}
+
+
+if (1023 >> 13 !== 0) {
+ $ERROR('#427: 1023 >> 13 === 0. Actual: ' + (1023 >> 13));
+}
+
+
+if (2047 >> 13 !== 0) {
+ $ERROR('#428: 2047 >> 13 === 0. Actual: ' + (2047 >> 13));
+}
+
+
+if (4095 >> 13 !== 0) {
+ $ERROR('#429: 4095 >> 13 === 0. Actual: ' + (4095 >> 13));
+}
+
+
+if (8191 >> 13 !== 0) {
+ $ERROR('#430: 8191 >> 13 === 0. Actual: ' + (8191 >> 13));
+}
+
+
+if (16383 >> 13 !== 1) {
+ $ERROR('#431: 16383 >> 13 === 1. Actual: ' + (16383 >> 13));
+}
+
+
+if (32767 >> 13 !== 3) {
+ $ERROR('#432: 32767 >> 13 === 3. Actual: ' + (32767 >> 13));
+}
+
+
+if (65535 >> 13 !== 7) {
+ $ERROR('#433: 65535 >> 13 === 7. Actual: ' + (65535 >> 13));
+}
+
+
+if (131071 >> 13 !== 15) {
+ $ERROR('#434: 131071 >> 13 === 15. Actual: ' + (131071 >> 13));
+}
+
+
+if (262143 >> 13 !== 31) {
+ $ERROR('#435: 262143 >> 13 === 31. Actual: ' + (262143 >> 13));
+}
+
+
+if (524287 >> 13 !== 63) {
+ $ERROR('#436: 524287 >> 13 === 63. Actual: ' + (524287 >> 13));
+}
+
+
+if (1048575 >> 13 !== 127) {
+ $ERROR('#437: 1048575 >> 13 === 127. Actual: ' + (1048575 >> 13));
+}
+
+
+if (2097151 >> 13 !== 255) {
+ $ERROR('#438: 2097151 >> 13 === 255. Actual: ' + (2097151 >> 13));
+}
+
+
+if (4194303 >> 13 !== 511) {
+ $ERROR('#439: 4194303 >> 13 === 511. Actual: ' + (4194303 >> 13));
+}
+
+
+if (8388607 >> 13 !== 1023) {
+ $ERROR('#440: 8388607 >> 13 === 1023. Actual: ' + (8388607 >> 13));
+}
+
+
+if (16777215 >> 13 !== 2047) {
+ $ERROR('#441: 16777215 >> 13 === 2047. Actual: ' + (16777215 >> 13));
+}
+
+
+if (33554431 >> 13 !== 4095) {
+ $ERROR('#442: 33554431 >> 13 === 4095. Actual: ' + (33554431 >> 13));
+}
+
+
+if (67108863 >> 13 !== 8191) {
+ $ERROR('#443: 67108863 >> 13 === 8191. Actual: ' + (67108863 >> 13));
+}
+
+
+if (134217727 >> 13 !== 16383) {
+ $ERROR('#444: 134217727 >> 13 === 16383. Actual: ' + (134217727 >> 13));
+}
+
+
+if (268435455 >> 13 !== 32767) {
+ $ERROR('#445: 268435455 >> 13 === 32767. Actual: ' + (268435455 >> 13));
+}
+
+
+if (536870911 >> 13 !== 65535) {
+ $ERROR('#446: 536870911 >> 13 === 65535. Actual: ' + (536870911 >> 13));
+}
+
+
+if (1073741823 >> 13 !== 131071) {
+ $ERROR('#447: 1073741823 >> 13 === 131071. Actual: ' + (1073741823 >> 13));
+}
+
+
+if (2147483647 >> 13 !== 262143) {
+ $ERROR('#448: 2147483647 >> 13 === 262143. Actual: ' + (2147483647 >> 13));
+}
+
+
+if (0 >> 14 !== 0) {
+ $ERROR('#449: 0 >> 14 === 0. Actual: ' + (0 >> 14));
+}
+
+
+if (1 >> 14 !== 0) {
+ $ERROR('#450: 1 >> 14 === 0. Actual: ' + (1 >> 14));
+}
+
+
+if (3 >> 14 !== 0) {
+ $ERROR('#451: 3 >> 14 === 0. Actual: ' + (3 >> 14));
+}
+
+
+if (7 >> 14 !== 0) {
+ $ERROR('#452: 7 >> 14 === 0. Actual: ' + (7 >> 14));
+}
+
+
+if (15 >> 14 !== 0) {
+ $ERROR('#453: 15 >> 14 === 0. Actual: ' + (15 >> 14));
+}
+
+
+if (31 >> 14 !== 0) {
+ $ERROR('#454: 31 >> 14 === 0. Actual: ' + (31 >> 14));
+}
+
+
+if (63 >> 14 !== 0) {
+ $ERROR('#455: 63 >> 14 === 0. Actual: ' + (63 >> 14));
+}
+
+
+if (127 >> 14 !== 0) {
+ $ERROR('#456: 127 >> 14 === 0. Actual: ' + (127 >> 14));
+}
+
+
+if (255 >> 14 !== 0) {
+ $ERROR('#457: 255 >> 14 === 0. Actual: ' + (255 >> 14));
+}
+
+
+if (511 >> 14 !== 0) {
+ $ERROR('#458: 511 >> 14 === 0. Actual: ' + (511 >> 14));
+}
+
+
+if (1023 >> 14 !== 0) {
+ $ERROR('#459: 1023 >> 14 === 0. Actual: ' + (1023 >> 14));
+}
+
+
+if (2047 >> 14 !== 0) {
+ $ERROR('#460: 2047 >> 14 === 0. Actual: ' + (2047 >> 14));
+}
+
+
+if (4095 >> 14 !== 0) {
+ $ERROR('#461: 4095 >> 14 === 0. Actual: ' + (4095 >> 14));
+}
+
+
+if (8191 >> 14 !== 0) {
+ $ERROR('#462: 8191 >> 14 === 0. Actual: ' + (8191 >> 14));
+}
+
+
+if (16383 >> 14 !== 0) {
+ $ERROR('#463: 16383 >> 14 === 0. Actual: ' + (16383 >> 14));
+}
+
+
+if (32767 >> 14 !== 1) {
+ $ERROR('#464: 32767 >> 14 === 1. Actual: ' + (32767 >> 14));
+}
+
+
+if (65535 >> 14 !== 3) {
+ $ERROR('#465: 65535 >> 14 === 3. Actual: ' + (65535 >> 14));
+}
+
+
+if (131071 >> 14 !== 7) {
+ $ERROR('#466: 131071 >> 14 === 7. Actual: ' + (131071 >> 14));
+}
+
+
+if (262143 >> 14 !== 15) {
+ $ERROR('#467: 262143 >> 14 === 15. Actual: ' + (262143 >> 14));
+}
+
+
+if (524287 >> 14 !== 31) {
+ $ERROR('#468: 524287 >> 14 === 31. Actual: ' + (524287 >> 14));
+}
+
+
+if (1048575 >> 14 !== 63) {
+ $ERROR('#469: 1048575 >> 14 === 63. Actual: ' + (1048575 >> 14));
+}
+
+
+if (2097151 >> 14 !== 127) {
+ $ERROR('#470: 2097151 >> 14 === 127. Actual: ' + (2097151 >> 14));
+}
+
+
+if (4194303 >> 14 !== 255) {
+ $ERROR('#471: 4194303 >> 14 === 255. Actual: ' + (4194303 >> 14));
+}
+
+
+if (8388607 >> 14 !== 511) {
+ $ERROR('#472: 8388607 >> 14 === 511. Actual: ' + (8388607 >> 14));
+}
+
+
+if (16777215 >> 14 !== 1023) {
+ $ERROR('#473: 16777215 >> 14 === 1023. Actual: ' + (16777215 >> 14));
+}
+
+
+if (33554431 >> 14 !== 2047) {
+ $ERROR('#474: 33554431 >> 14 === 2047. Actual: ' + (33554431 >> 14));
+}
+
+
+if (67108863 >> 14 !== 4095) {
+ $ERROR('#475: 67108863 >> 14 === 4095. Actual: ' + (67108863 >> 14));
+}
+
+
+if (134217727 >> 14 !== 8191) {
+ $ERROR('#476: 134217727 >> 14 === 8191. Actual: ' + (134217727 >> 14));
+}
+
+
+if (268435455 >> 14 !== 16383) {
+ $ERROR('#477: 268435455 >> 14 === 16383. Actual: ' + (268435455 >> 14));
+}
+
+
+if (536870911 >> 14 !== 32767) {
+ $ERROR('#478: 536870911 >> 14 === 32767. Actual: ' + (536870911 >> 14));
+}
+
+
+if (1073741823 >> 14 !== 65535) {
+ $ERROR('#479: 1073741823 >> 14 === 65535. Actual: ' + (1073741823 >> 14));
+}
+
+
+if (2147483647 >> 14 !== 131071) {
+ $ERROR('#480: 2147483647 >> 14 === 131071. Actual: ' + (2147483647 >> 14));
+}
+
+
+if (0 >> 15 !== 0) {
+ $ERROR('#481: 0 >> 15 === 0. Actual: ' + (0 >> 15));
+}
+
+
+if (1 >> 15 !== 0) {
+ $ERROR('#482: 1 >> 15 === 0. Actual: ' + (1 >> 15));
+}
+
+
+if (3 >> 15 !== 0) {
+ $ERROR('#483: 3 >> 15 === 0. Actual: ' + (3 >> 15));
+}
+
+
+if (7 >> 15 !== 0) {
+ $ERROR('#484: 7 >> 15 === 0. Actual: ' + (7 >> 15));
+}
+
+
+if (15 >> 15 !== 0) {
+ $ERROR('#485: 15 >> 15 === 0. Actual: ' + (15 >> 15));
+}
+
+
+if (31 >> 15 !== 0) {
+ $ERROR('#486: 31 >> 15 === 0. Actual: ' + (31 >> 15));
+}
+
+
+if (63 >> 15 !== 0) {
+ $ERROR('#487: 63 >> 15 === 0. Actual: ' + (63 >> 15));
+}
+
+
+if (127 >> 15 !== 0) {
+ $ERROR('#488: 127 >> 15 === 0. Actual: ' + (127 >> 15));
+}
+
+
+if (255 >> 15 !== 0) {
+ $ERROR('#489: 255 >> 15 === 0. Actual: ' + (255 >> 15));
+}
+
+
+if (511 >> 15 !== 0) {
+ $ERROR('#490: 511 >> 15 === 0. Actual: ' + (511 >> 15));
+}
+
+
+if (1023 >> 15 !== 0) {
+ $ERROR('#491: 1023 >> 15 === 0. Actual: ' + (1023 >> 15));
+}
+
+
+if (2047 >> 15 !== 0) {
+ $ERROR('#492: 2047 >> 15 === 0. Actual: ' + (2047 >> 15));
+}
+
+
+if (4095 >> 15 !== 0) {
+ $ERROR('#493: 4095 >> 15 === 0. Actual: ' + (4095 >> 15));
+}
+
+
+if (8191 >> 15 !== 0) {
+ $ERROR('#494: 8191 >> 15 === 0. Actual: ' + (8191 >> 15));
+}
+
+
+if (16383 >> 15 !== 0) {
+ $ERROR('#495: 16383 >> 15 === 0. Actual: ' + (16383 >> 15));
+}
+
+
+if (32767 >> 15 !== 0) {
+ $ERROR('#496: 32767 >> 15 === 0. Actual: ' + (32767 >> 15));
+}
+
+
+if (65535 >> 15 !== 1) {
+ $ERROR('#497: 65535 >> 15 === 1. Actual: ' + (65535 >> 15));
+}
+
+
+if (131071 >> 15 !== 3) {
+ $ERROR('#498: 131071 >> 15 === 3. Actual: ' + (131071 >> 15));
+}
+
+
+if (262143 >> 15 !== 7) {
+ $ERROR('#499: 262143 >> 15 === 7. Actual: ' + (262143 >> 15));
+}
+
+
+if (524287 >> 15 !== 15) {
+ $ERROR('#500: 524287 >> 15 === 15. Actual: ' + (524287 >> 15));
+}
+
+
+if (1048575 >> 15 !== 31) {
+ $ERROR('#501: 1048575 >> 15 === 31. Actual: ' + (1048575 >> 15));
+}
+
+
+if (2097151 >> 15 !== 63) {
+ $ERROR('#502: 2097151 >> 15 === 63. Actual: ' + (2097151 >> 15));
+}
+
+
+if (4194303 >> 15 !== 127) {
+ $ERROR('#503: 4194303 >> 15 === 127. Actual: ' + (4194303 >> 15));
+}
+
+
+if (8388607 >> 15 !== 255) {
+ $ERROR('#504: 8388607 >> 15 === 255. Actual: ' + (8388607 >> 15));
+}
+
+
+if (16777215 >> 15 !== 511) {
+ $ERROR('#505: 16777215 >> 15 === 511. Actual: ' + (16777215 >> 15));
+}
+
+
+if (33554431 >> 15 !== 1023) {
+ $ERROR('#506: 33554431 >> 15 === 1023. Actual: ' + (33554431 >> 15));
+}
+
+
+if (67108863 >> 15 !== 2047) {
+ $ERROR('#507: 67108863 >> 15 === 2047. Actual: ' + (67108863 >> 15));
+}
+
+
+if (134217727 >> 15 !== 4095) {
+ $ERROR('#508: 134217727 >> 15 === 4095. Actual: ' + (134217727 >> 15));
+}
+
+
+if (268435455 >> 15 !== 8191) {
+ $ERROR('#509: 268435455 >> 15 === 8191. Actual: ' + (268435455 >> 15));
+}
+
+
+if (536870911 >> 15 !== 16383) {
+ $ERROR('#510: 536870911 >> 15 === 16383. Actual: ' + (536870911 >> 15));
+}
+
+
+if (1073741823 >> 15 !== 32767) {
+ $ERROR('#511: 1073741823 >> 15 === 32767. Actual: ' + (1073741823 >> 15));
+}
+
+
+if (2147483647 >> 15 !== 65535) {
+ $ERROR('#512: 2147483647 >> 15 === 65535. Actual: ' + (2147483647 >> 15));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T4.js
new file mode 100644
index 000000000..04c473a1f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A4_T4.js
@@ -0,0 +1,2565 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A4_T4;
+ * @section: 11.7.2;
+ * @assertion: Check x >> y operator in distinct points;
+ * @description: ShiftExpression = 2^n - 1, n = 16...31;
+ */
+
+//CHECK
+
+if (0 >> 16 !== 0) {
+ $ERROR('#513: 0 >> 16 === 0. Actual: ' + (0 >> 16));
+}
+
+
+if (1 >> 16 !== 0) {
+ $ERROR('#514: 1 >> 16 === 0. Actual: ' + (1 >> 16));
+}
+
+
+if (3 >> 16 !== 0) {
+ $ERROR('#515: 3 >> 16 === 0. Actual: ' + (3 >> 16));
+}
+
+
+if (7 >> 16 !== 0) {
+ $ERROR('#516: 7 >> 16 === 0. Actual: ' + (7 >> 16));
+}
+
+
+if (15 >> 16 !== 0) {
+ $ERROR('#517: 15 >> 16 === 0. Actual: ' + (15 >> 16));
+}
+
+
+if (31 >> 16 !== 0) {
+ $ERROR('#518: 31 >> 16 === 0. Actual: ' + (31 >> 16));
+}
+
+
+if (63 >> 16 !== 0) {
+ $ERROR('#519: 63 >> 16 === 0. Actual: ' + (63 >> 16));
+}
+
+
+if (127 >> 16 !== 0) {
+ $ERROR('#520: 127 >> 16 === 0. Actual: ' + (127 >> 16));
+}
+
+
+if (255 >> 16 !== 0) {
+ $ERROR('#521: 255 >> 16 === 0. Actual: ' + (255 >> 16));
+}
+
+
+if (511 >> 16 !== 0) {
+ $ERROR('#522: 511 >> 16 === 0. Actual: ' + (511 >> 16));
+}
+
+
+if (1023 >> 16 !== 0) {
+ $ERROR('#523: 1023 >> 16 === 0. Actual: ' + (1023 >> 16));
+}
+
+
+if (2047 >> 16 !== 0) {
+ $ERROR('#524: 2047 >> 16 === 0. Actual: ' + (2047 >> 16));
+}
+
+
+if (4095 >> 16 !== 0) {
+ $ERROR('#525: 4095 >> 16 === 0. Actual: ' + (4095 >> 16));
+}
+
+
+if (8191 >> 16 !== 0) {
+ $ERROR('#526: 8191 >> 16 === 0. Actual: ' + (8191 >> 16));
+}
+
+
+if (16383 >> 16 !== 0) {
+ $ERROR('#527: 16383 >> 16 === 0. Actual: ' + (16383 >> 16));
+}
+
+
+if (32767 >> 16 !== 0) {
+ $ERROR('#528: 32767 >> 16 === 0. Actual: ' + (32767 >> 16));
+}
+
+
+if (65535 >> 16 !== 0) {
+ $ERROR('#529: 65535 >> 16 === 0. Actual: ' + (65535 >> 16));
+}
+
+
+if (131071 >> 16 !== 1) {
+ $ERROR('#530: 131071 >> 16 === 1. Actual: ' + (131071 >> 16));
+}
+
+
+if (262143 >> 16 !== 3) {
+ $ERROR('#531: 262143 >> 16 === 3. Actual: ' + (262143 >> 16));
+}
+
+
+if (524287 >> 16 !== 7) {
+ $ERROR('#532: 524287 >> 16 === 7. Actual: ' + (524287 >> 16));
+}
+
+
+if (1048575 >> 16 !== 15) {
+ $ERROR('#533: 1048575 >> 16 === 15. Actual: ' + (1048575 >> 16));
+}
+
+
+if (2097151 >> 16 !== 31) {
+ $ERROR('#534: 2097151 >> 16 === 31. Actual: ' + (2097151 >> 16));
+}
+
+
+if (4194303 >> 16 !== 63) {
+ $ERROR('#535: 4194303 >> 16 === 63. Actual: ' + (4194303 >> 16));
+}
+
+
+if (8388607 >> 16 !== 127) {
+ $ERROR('#536: 8388607 >> 16 === 127. Actual: ' + (8388607 >> 16));
+}
+
+
+if (16777215 >> 16 !== 255) {
+ $ERROR('#537: 16777215 >> 16 === 255. Actual: ' + (16777215 >> 16));
+}
+
+
+if (33554431 >> 16 !== 511) {
+ $ERROR('#538: 33554431 >> 16 === 511. Actual: ' + (33554431 >> 16));
+}
+
+
+if (67108863 >> 16 !== 1023) {
+ $ERROR('#539: 67108863 >> 16 === 1023. Actual: ' + (67108863 >> 16));
+}
+
+
+if (134217727 >> 16 !== 2047) {
+ $ERROR('#540: 134217727 >> 16 === 2047. Actual: ' + (134217727 >> 16));
+}
+
+
+if (268435455 >> 16 !== 4095) {
+ $ERROR('#541: 268435455 >> 16 === 4095. Actual: ' + (268435455 >> 16));
+}
+
+
+if (536870911 >> 16 !== 8191) {
+ $ERROR('#542: 536870911 >> 16 === 8191. Actual: ' + (536870911 >> 16));
+}
+
+
+if (1073741823 >> 16 !== 16383) {
+ $ERROR('#543: 1073741823 >> 16 === 16383. Actual: ' + (1073741823 >> 16));
+}
+
+
+if (2147483647 >> 16 !== 32767) {
+ $ERROR('#544: 2147483647 >> 16 === 32767. Actual: ' + (2147483647 >> 16));
+}
+
+
+if (0 >> 17 !== 0) {
+ $ERROR('#545: 0 >> 17 === 0. Actual: ' + (0 >> 17));
+}
+
+
+if (1 >> 17 !== 0) {
+ $ERROR('#546: 1 >> 17 === 0. Actual: ' + (1 >> 17));
+}
+
+
+if (3 >> 17 !== 0) {
+ $ERROR('#547: 3 >> 17 === 0. Actual: ' + (3 >> 17));
+}
+
+
+if (7 >> 17 !== 0) {
+ $ERROR('#548: 7 >> 17 === 0. Actual: ' + (7 >> 17));
+}
+
+
+if (15 >> 17 !== 0) {
+ $ERROR('#549: 15 >> 17 === 0. Actual: ' + (15 >> 17));
+}
+
+
+if (31 >> 17 !== 0) {
+ $ERROR('#550: 31 >> 17 === 0. Actual: ' + (31 >> 17));
+}
+
+
+if (63 >> 17 !== 0) {
+ $ERROR('#551: 63 >> 17 === 0. Actual: ' + (63 >> 17));
+}
+
+
+if (127 >> 17 !== 0) {
+ $ERROR('#552: 127 >> 17 === 0. Actual: ' + (127 >> 17));
+}
+
+
+if (255 >> 17 !== 0) {
+ $ERROR('#553: 255 >> 17 === 0. Actual: ' + (255 >> 17));
+}
+
+
+if (511 >> 17 !== 0) {
+ $ERROR('#554: 511 >> 17 === 0. Actual: ' + (511 >> 17));
+}
+
+
+if (1023 >> 17 !== 0) {
+ $ERROR('#555: 1023 >> 17 === 0. Actual: ' + (1023 >> 17));
+}
+
+
+if (2047 >> 17 !== 0) {
+ $ERROR('#556: 2047 >> 17 === 0. Actual: ' + (2047 >> 17));
+}
+
+
+if (4095 >> 17 !== 0) {
+ $ERROR('#557: 4095 >> 17 === 0. Actual: ' + (4095 >> 17));
+}
+
+
+if (8191 >> 17 !== 0) {
+ $ERROR('#558: 8191 >> 17 === 0. Actual: ' + (8191 >> 17));
+}
+
+
+if (16383 >> 17 !== 0) {
+ $ERROR('#559: 16383 >> 17 === 0. Actual: ' + (16383 >> 17));
+}
+
+
+if (32767 >> 17 !== 0) {
+ $ERROR('#560: 32767 >> 17 === 0. Actual: ' + (32767 >> 17));
+}
+
+
+if (65535 >> 17 !== 0) {
+ $ERROR('#561: 65535 >> 17 === 0. Actual: ' + (65535 >> 17));
+}
+
+
+if (131071 >> 17 !== 0) {
+ $ERROR('#562: 131071 >> 17 === 0. Actual: ' + (131071 >> 17));
+}
+
+
+if (262143 >> 17 !== 1) {
+ $ERROR('#563: 262143 >> 17 === 1. Actual: ' + (262143 >> 17));
+}
+
+
+if (524287 >> 17 !== 3) {
+ $ERROR('#564: 524287 >> 17 === 3. Actual: ' + (524287 >> 17));
+}
+
+
+if (1048575 >> 17 !== 7) {
+ $ERROR('#565: 1048575 >> 17 === 7. Actual: ' + (1048575 >> 17));
+}
+
+
+if (2097151 >> 17 !== 15) {
+ $ERROR('#566: 2097151 >> 17 === 15. Actual: ' + (2097151 >> 17));
+}
+
+
+if (4194303 >> 17 !== 31) {
+ $ERROR('#567: 4194303 >> 17 === 31. Actual: ' + (4194303 >> 17));
+}
+
+
+if (8388607 >> 17 !== 63) {
+ $ERROR('#568: 8388607 >> 17 === 63. Actual: ' + (8388607 >> 17));
+}
+
+
+if (16777215 >> 17 !== 127) {
+ $ERROR('#569: 16777215 >> 17 === 127. Actual: ' + (16777215 >> 17));
+}
+
+
+if (33554431 >> 17 !== 255) {
+ $ERROR('#570: 33554431 >> 17 === 255. Actual: ' + (33554431 >> 17));
+}
+
+
+if (67108863 >> 17 !== 511) {
+ $ERROR('#571: 67108863 >> 17 === 511. Actual: ' + (67108863 >> 17));
+}
+
+
+if (134217727 >> 17 !== 1023) {
+ $ERROR('#572: 134217727 >> 17 === 1023. Actual: ' + (134217727 >> 17));
+}
+
+
+if (268435455 >> 17 !== 2047) {
+ $ERROR('#573: 268435455 >> 17 === 2047. Actual: ' + (268435455 >> 17));
+}
+
+
+if (536870911 >> 17 !== 4095) {
+ $ERROR('#574: 536870911 >> 17 === 4095. Actual: ' + (536870911 >> 17));
+}
+
+
+if (1073741823 >> 17 !== 8191) {
+ $ERROR('#575: 1073741823 >> 17 === 8191. Actual: ' + (1073741823 >> 17));
+}
+
+
+if (2147483647 >> 17 !== 16383) {
+ $ERROR('#576: 2147483647 >> 17 === 16383. Actual: ' + (2147483647 >> 17));
+}
+
+
+if (0 >> 18 !== 0) {
+ $ERROR('#577: 0 >> 18 === 0. Actual: ' + (0 >> 18));
+}
+
+
+if (1 >> 18 !== 0) {
+ $ERROR('#578: 1 >> 18 === 0. Actual: ' + (1 >> 18));
+}
+
+
+if (3 >> 18 !== 0) {
+ $ERROR('#579: 3 >> 18 === 0. Actual: ' + (3 >> 18));
+}
+
+
+if (7 >> 18 !== 0) {
+ $ERROR('#580: 7 >> 18 === 0. Actual: ' + (7 >> 18));
+}
+
+
+if (15 >> 18 !== 0) {
+ $ERROR('#581: 15 >> 18 === 0. Actual: ' + (15 >> 18));
+}
+
+
+if (31 >> 18 !== 0) {
+ $ERROR('#582: 31 >> 18 === 0. Actual: ' + (31 >> 18));
+}
+
+
+if (63 >> 18 !== 0) {
+ $ERROR('#583: 63 >> 18 === 0. Actual: ' + (63 >> 18));
+}
+
+
+if (127 >> 18 !== 0) {
+ $ERROR('#584: 127 >> 18 === 0. Actual: ' + (127 >> 18));
+}
+
+
+if (255 >> 18 !== 0) {
+ $ERROR('#585: 255 >> 18 === 0. Actual: ' + (255 >> 18));
+}
+
+
+if (511 >> 18 !== 0) {
+ $ERROR('#586: 511 >> 18 === 0. Actual: ' + (511 >> 18));
+}
+
+
+if (1023 >> 18 !== 0) {
+ $ERROR('#587: 1023 >> 18 === 0. Actual: ' + (1023 >> 18));
+}
+
+
+if (2047 >> 18 !== 0) {
+ $ERROR('#588: 2047 >> 18 === 0. Actual: ' + (2047 >> 18));
+}
+
+
+if (4095 >> 18 !== 0) {
+ $ERROR('#589: 4095 >> 18 === 0. Actual: ' + (4095 >> 18));
+}
+
+
+if (8191 >> 18 !== 0) {
+ $ERROR('#590: 8191 >> 18 === 0. Actual: ' + (8191 >> 18));
+}
+
+
+if (16383 >> 18 !== 0) {
+ $ERROR('#591: 16383 >> 18 === 0. Actual: ' + (16383 >> 18));
+}
+
+
+if (32767 >> 18 !== 0) {
+ $ERROR('#592: 32767 >> 18 === 0. Actual: ' + (32767 >> 18));
+}
+
+
+if (65535 >> 18 !== 0) {
+ $ERROR('#593: 65535 >> 18 === 0. Actual: ' + (65535 >> 18));
+}
+
+
+if (131071 >> 18 !== 0) {
+ $ERROR('#594: 131071 >> 18 === 0. Actual: ' + (131071 >> 18));
+}
+
+
+if (262143 >> 18 !== 0) {
+ $ERROR('#595: 262143 >> 18 === 0. Actual: ' + (262143 >> 18));
+}
+
+
+if (524287 >> 18 !== 1) {
+ $ERROR('#596: 524287 >> 18 === 1. Actual: ' + (524287 >> 18));
+}
+
+
+if (1048575 >> 18 !== 3) {
+ $ERROR('#597: 1048575 >> 18 === 3. Actual: ' + (1048575 >> 18));
+}
+
+
+if (2097151 >> 18 !== 7) {
+ $ERROR('#598: 2097151 >> 18 === 7. Actual: ' + (2097151 >> 18));
+}
+
+
+if (4194303 >> 18 !== 15) {
+ $ERROR('#599: 4194303 >> 18 === 15. Actual: ' + (4194303 >> 18));
+}
+
+
+if (8388607 >> 18 !== 31) {
+ $ERROR('#600: 8388607 >> 18 === 31. Actual: ' + (8388607 >> 18));
+}
+
+
+if (16777215 >> 18 !== 63) {
+ $ERROR('#601: 16777215 >> 18 === 63. Actual: ' + (16777215 >> 18));
+}
+
+
+if (33554431 >> 18 !== 127) {
+ $ERROR('#602: 33554431 >> 18 === 127. Actual: ' + (33554431 >> 18));
+}
+
+
+if (67108863 >> 18 !== 255) {
+ $ERROR('#603: 67108863 >> 18 === 255. Actual: ' + (67108863 >> 18));
+}
+
+
+if (134217727 >> 18 !== 511) {
+ $ERROR('#604: 134217727 >> 18 === 511. Actual: ' + (134217727 >> 18));
+}
+
+
+if (268435455 >> 18 !== 1023) {
+ $ERROR('#605: 268435455 >> 18 === 1023. Actual: ' + (268435455 >> 18));
+}
+
+
+if (536870911 >> 18 !== 2047) {
+ $ERROR('#606: 536870911 >> 18 === 2047. Actual: ' + (536870911 >> 18));
+}
+
+
+if (1073741823 >> 18 !== 4095) {
+ $ERROR('#607: 1073741823 >> 18 === 4095. Actual: ' + (1073741823 >> 18));
+}
+
+
+if (2147483647 >> 18 !== 8191) {
+ $ERROR('#608: 2147483647 >> 18 === 8191. Actual: ' + (2147483647 >> 18));
+}
+
+
+if (0 >> 19 !== 0) {
+ $ERROR('#609: 0 >> 19 === 0. Actual: ' + (0 >> 19));
+}
+
+
+if (1 >> 19 !== 0) {
+ $ERROR('#610: 1 >> 19 === 0. Actual: ' + (1 >> 19));
+}
+
+
+if (3 >> 19 !== 0) {
+ $ERROR('#611: 3 >> 19 === 0. Actual: ' + (3 >> 19));
+}
+
+
+if (7 >> 19 !== 0) {
+ $ERROR('#612: 7 >> 19 === 0. Actual: ' + (7 >> 19));
+}
+
+
+if (15 >> 19 !== 0) {
+ $ERROR('#613: 15 >> 19 === 0. Actual: ' + (15 >> 19));
+}
+
+
+if (31 >> 19 !== 0) {
+ $ERROR('#614: 31 >> 19 === 0. Actual: ' + (31 >> 19));
+}
+
+
+if (63 >> 19 !== 0) {
+ $ERROR('#615: 63 >> 19 === 0. Actual: ' + (63 >> 19));
+}
+
+
+if (127 >> 19 !== 0) {
+ $ERROR('#616: 127 >> 19 === 0. Actual: ' + (127 >> 19));
+}
+
+
+if (255 >> 19 !== 0) {
+ $ERROR('#617: 255 >> 19 === 0. Actual: ' + (255 >> 19));
+}
+
+
+if (511 >> 19 !== 0) {
+ $ERROR('#618: 511 >> 19 === 0. Actual: ' + (511 >> 19));
+}
+
+
+if (1023 >> 19 !== 0) {
+ $ERROR('#619: 1023 >> 19 === 0. Actual: ' + (1023 >> 19));
+}
+
+
+if (2047 >> 19 !== 0) {
+ $ERROR('#620: 2047 >> 19 === 0. Actual: ' + (2047 >> 19));
+}
+
+
+if (4095 >> 19 !== 0) {
+ $ERROR('#621: 4095 >> 19 === 0. Actual: ' + (4095 >> 19));
+}
+
+
+if (8191 >> 19 !== 0) {
+ $ERROR('#622: 8191 >> 19 === 0. Actual: ' + (8191 >> 19));
+}
+
+
+if (16383 >> 19 !== 0) {
+ $ERROR('#623: 16383 >> 19 === 0. Actual: ' + (16383 >> 19));
+}
+
+
+if (32767 >> 19 !== 0) {
+ $ERROR('#624: 32767 >> 19 === 0. Actual: ' + (32767 >> 19));
+}
+
+
+if (65535 >> 19 !== 0) {
+ $ERROR('#625: 65535 >> 19 === 0. Actual: ' + (65535 >> 19));
+}
+
+
+if (131071 >> 19 !== 0) {
+ $ERROR('#626: 131071 >> 19 === 0. Actual: ' + (131071 >> 19));
+}
+
+
+if (262143 >> 19 !== 0) {
+ $ERROR('#627: 262143 >> 19 === 0. Actual: ' + (262143 >> 19));
+}
+
+
+if (524287 >> 19 !== 0) {
+ $ERROR('#628: 524287 >> 19 === 0. Actual: ' + (524287 >> 19));
+}
+
+
+if (1048575 >> 19 !== 1) {
+ $ERROR('#629: 1048575 >> 19 === 1. Actual: ' + (1048575 >> 19));
+}
+
+
+if (2097151 >> 19 !== 3) {
+ $ERROR('#630: 2097151 >> 19 === 3. Actual: ' + (2097151 >> 19));
+}
+
+
+if (4194303 >> 19 !== 7) {
+ $ERROR('#631: 4194303 >> 19 === 7. Actual: ' + (4194303 >> 19));
+}
+
+
+if (8388607 >> 19 !== 15) {
+ $ERROR('#632: 8388607 >> 19 === 15. Actual: ' + (8388607 >> 19));
+}
+
+
+if (16777215 >> 19 !== 31) {
+ $ERROR('#633: 16777215 >> 19 === 31. Actual: ' + (16777215 >> 19));
+}
+
+
+if (33554431 >> 19 !== 63) {
+ $ERROR('#634: 33554431 >> 19 === 63. Actual: ' + (33554431 >> 19));
+}
+
+
+if (67108863 >> 19 !== 127) {
+ $ERROR('#635: 67108863 >> 19 === 127. Actual: ' + (67108863 >> 19));
+}
+
+
+if (134217727 >> 19 !== 255) {
+ $ERROR('#636: 134217727 >> 19 === 255. Actual: ' + (134217727 >> 19));
+}
+
+
+if (268435455 >> 19 !== 511) {
+ $ERROR('#637: 268435455 >> 19 === 511. Actual: ' + (268435455 >> 19));
+}
+
+
+if (536870911 >> 19 !== 1023) {
+ $ERROR('#638: 536870911 >> 19 === 1023. Actual: ' + (536870911 >> 19));
+}
+
+
+if (1073741823 >> 19 !== 2047) {
+ $ERROR('#639: 1073741823 >> 19 === 2047. Actual: ' + (1073741823 >> 19));
+}
+
+
+if (2147483647 >> 19 !== 4095) {
+ $ERROR('#640: 2147483647 >> 19 === 4095. Actual: ' + (2147483647 >> 19));
+}
+
+
+if (0 >> 20 !== 0) {
+ $ERROR('#641: 0 >> 20 === 0. Actual: ' + (0 >> 20));
+}
+
+
+if (1 >> 20 !== 0) {
+ $ERROR('#642: 1 >> 20 === 0. Actual: ' + (1 >> 20));
+}
+
+
+if (3 >> 20 !== 0) {
+ $ERROR('#643: 3 >> 20 === 0. Actual: ' + (3 >> 20));
+}
+
+
+if (7 >> 20 !== 0) {
+ $ERROR('#644: 7 >> 20 === 0. Actual: ' + (7 >> 20));
+}
+
+
+if (15 >> 20 !== 0) {
+ $ERROR('#645: 15 >> 20 === 0. Actual: ' + (15 >> 20));
+}
+
+
+if (31 >> 20 !== 0) {
+ $ERROR('#646: 31 >> 20 === 0. Actual: ' + (31 >> 20));
+}
+
+
+if (63 >> 20 !== 0) {
+ $ERROR('#647: 63 >> 20 === 0. Actual: ' + (63 >> 20));
+}
+
+
+if (127 >> 20 !== 0) {
+ $ERROR('#648: 127 >> 20 === 0. Actual: ' + (127 >> 20));
+}
+
+
+if (255 >> 20 !== 0) {
+ $ERROR('#649: 255 >> 20 === 0. Actual: ' + (255 >> 20));
+}
+
+
+if (511 >> 20 !== 0) {
+ $ERROR('#650: 511 >> 20 === 0. Actual: ' + (511 >> 20));
+}
+
+
+if (1023 >> 20 !== 0) {
+ $ERROR('#651: 1023 >> 20 === 0. Actual: ' + (1023 >> 20));
+}
+
+
+if (2047 >> 20 !== 0) {
+ $ERROR('#652: 2047 >> 20 === 0. Actual: ' + (2047 >> 20));
+}
+
+
+if (4095 >> 20 !== 0) {
+ $ERROR('#653: 4095 >> 20 === 0. Actual: ' + (4095 >> 20));
+}
+
+
+if (8191 >> 20 !== 0) {
+ $ERROR('#654: 8191 >> 20 === 0. Actual: ' + (8191 >> 20));
+}
+
+
+if (16383 >> 20 !== 0) {
+ $ERROR('#655: 16383 >> 20 === 0. Actual: ' + (16383 >> 20));
+}
+
+
+if (32767 >> 20 !== 0) {
+ $ERROR('#656: 32767 >> 20 === 0. Actual: ' + (32767 >> 20));
+}
+
+
+if (65535 >> 20 !== 0) {
+ $ERROR('#657: 65535 >> 20 === 0. Actual: ' + (65535 >> 20));
+}
+
+
+if (131071 >> 20 !== 0) {
+ $ERROR('#658: 131071 >> 20 === 0. Actual: ' + (131071 >> 20));
+}
+
+
+if (262143 >> 20 !== 0) {
+ $ERROR('#659: 262143 >> 20 === 0. Actual: ' + (262143 >> 20));
+}
+
+
+if (524287 >> 20 !== 0) {
+ $ERROR('#660: 524287 >> 20 === 0. Actual: ' + (524287 >> 20));
+}
+
+
+if (1048575 >> 20 !== 0) {
+ $ERROR('#661: 1048575 >> 20 === 0. Actual: ' + (1048575 >> 20));
+}
+
+
+if (2097151 >> 20 !== 1) {
+ $ERROR('#662: 2097151 >> 20 === 1. Actual: ' + (2097151 >> 20));
+}
+
+
+if (4194303 >> 20 !== 3) {
+ $ERROR('#663: 4194303 >> 20 === 3. Actual: ' + (4194303 >> 20));
+}
+
+
+if (8388607 >> 20 !== 7) {
+ $ERROR('#664: 8388607 >> 20 === 7. Actual: ' + (8388607 >> 20));
+}
+
+
+if (16777215 >> 20 !== 15) {
+ $ERROR('#665: 16777215 >> 20 === 15. Actual: ' + (16777215 >> 20));
+}
+
+
+if (33554431 >> 20 !== 31) {
+ $ERROR('#666: 33554431 >> 20 === 31. Actual: ' + (33554431 >> 20));
+}
+
+
+if (67108863 >> 20 !== 63) {
+ $ERROR('#667: 67108863 >> 20 === 63. Actual: ' + (67108863 >> 20));
+}
+
+
+if (134217727 >> 20 !== 127) {
+ $ERROR('#668: 134217727 >> 20 === 127. Actual: ' + (134217727 >> 20));
+}
+
+
+if (268435455 >> 20 !== 255) {
+ $ERROR('#669: 268435455 >> 20 === 255. Actual: ' + (268435455 >> 20));
+}
+
+
+if (536870911 >> 20 !== 511) {
+ $ERROR('#670: 536870911 >> 20 === 511. Actual: ' + (536870911 >> 20));
+}
+
+
+if (1073741823 >> 20 !== 1023) {
+ $ERROR('#671: 1073741823 >> 20 === 1023. Actual: ' + (1073741823 >> 20));
+}
+
+
+if (2147483647 >> 20 !== 2047) {
+ $ERROR('#672: 2147483647 >> 20 === 2047. Actual: ' + (2147483647 >> 20));
+}
+
+
+if (0 >> 21 !== 0) {
+ $ERROR('#673: 0 >> 21 === 0. Actual: ' + (0 >> 21));
+}
+
+
+if (1 >> 21 !== 0) {
+ $ERROR('#674: 1 >> 21 === 0. Actual: ' + (1 >> 21));
+}
+
+
+if (3 >> 21 !== 0) {
+ $ERROR('#675: 3 >> 21 === 0. Actual: ' + (3 >> 21));
+}
+
+
+if (7 >> 21 !== 0) {
+ $ERROR('#676: 7 >> 21 === 0. Actual: ' + (7 >> 21));
+}
+
+
+if (15 >> 21 !== 0) {
+ $ERROR('#677: 15 >> 21 === 0. Actual: ' + (15 >> 21));
+}
+
+
+if (31 >> 21 !== 0) {
+ $ERROR('#678: 31 >> 21 === 0. Actual: ' + (31 >> 21));
+}
+
+
+if (63 >> 21 !== 0) {
+ $ERROR('#679: 63 >> 21 === 0. Actual: ' + (63 >> 21));
+}
+
+
+if (127 >> 21 !== 0) {
+ $ERROR('#680: 127 >> 21 === 0. Actual: ' + (127 >> 21));
+}
+
+
+if (255 >> 21 !== 0) {
+ $ERROR('#681: 255 >> 21 === 0. Actual: ' + (255 >> 21));
+}
+
+
+if (511 >> 21 !== 0) {
+ $ERROR('#682: 511 >> 21 === 0. Actual: ' + (511 >> 21));
+}
+
+
+if (1023 >> 21 !== 0) {
+ $ERROR('#683: 1023 >> 21 === 0. Actual: ' + (1023 >> 21));
+}
+
+
+if (2047 >> 21 !== 0) {
+ $ERROR('#684: 2047 >> 21 === 0. Actual: ' + (2047 >> 21));
+}
+
+
+if (4095 >> 21 !== 0) {
+ $ERROR('#685: 4095 >> 21 === 0. Actual: ' + (4095 >> 21));
+}
+
+
+if (8191 >> 21 !== 0) {
+ $ERROR('#686: 8191 >> 21 === 0. Actual: ' + (8191 >> 21));
+}
+
+
+if (16383 >> 21 !== 0) {
+ $ERROR('#687: 16383 >> 21 === 0. Actual: ' + (16383 >> 21));
+}
+
+
+if (32767 >> 21 !== 0) {
+ $ERROR('#688: 32767 >> 21 === 0. Actual: ' + (32767 >> 21));
+}
+
+
+if (65535 >> 21 !== 0) {
+ $ERROR('#689: 65535 >> 21 === 0. Actual: ' + (65535 >> 21));
+}
+
+
+if (131071 >> 21 !== 0) {
+ $ERROR('#690: 131071 >> 21 === 0. Actual: ' + (131071 >> 21));
+}
+
+
+if (262143 >> 21 !== 0) {
+ $ERROR('#691: 262143 >> 21 === 0. Actual: ' + (262143 >> 21));
+}
+
+
+if (524287 >> 21 !== 0) {
+ $ERROR('#692: 524287 >> 21 === 0. Actual: ' + (524287 >> 21));
+}
+
+
+if (1048575 >> 21 !== 0) {
+ $ERROR('#693: 1048575 >> 21 === 0. Actual: ' + (1048575 >> 21));
+}
+
+
+if (2097151 >> 21 !== 0) {
+ $ERROR('#694: 2097151 >> 21 === 0. Actual: ' + (2097151 >> 21));
+}
+
+
+if (4194303 >> 21 !== 1) {
+ $ERROR('#695: 4194303 >> 21 === 1. Actual: ' + (4194303 >> 21));
+}
+
+
+if (8388607 >> 21 !== 3) {
+ $ERROR('#696: 8388607 >> 21 === 3. Actual: ' + (8388607 >> 21));
+}
+
+
+if (16777215 >> 21 !== 7) {
+ $ERROR('#697: 16777215 >> 21 === 7. Actual: ' + (16777215 >> 21));
+}
+
+
+if (33554431 >> 21 !== 15) {
+ $ERROR('#698: 33554431 >> 21 === 15. Actual: ' + (33554431 >> 21));
+}
+
+
+if (67108863 >> 21 !== 31) {
+ $ERROR('#699: 67108863 >> 21 === 31. Actual: ' + (67108863 >> 21));
+}
+
+
+if (134217727 >> 21 !== 63) {
+ $ERROR('#700: 134217727 >> 21 === 63. Actual: ' + (134217727 >> 21));
+}
+
+
+if (268435455 >> 21 !== 127) {
+ $ERROR('#701: 268435455 >> 21 === 127. Actual: ' + (268435455 >> 21));
+}
+
+
+if (536870911 >> 21 !== 255) {
+ $ERROR('#702: 536870911 >> 21 === 255. Actual: ' + (536870911 >> 21));
+}
+
+
+if (1073741823 >> 21 !== 511) {
+ $ERROR('#703: 1073741823 >> 21 === 511. Actual: ' + (1073741823 >> 21));
+}
+
+
+if (2147483647 >> 21 !== 1023) {
+ $ERROR('#704: 2147483647 >> 21 === 1023. Actual: ' + (2147483647 >> 21));
+}
+
+
+if (0 >> 22 !== 0) {
+ $ERROR('#705: 0 >> 22 === 0. Actual: ' + (0 >> 22));
+}
+
+
+if (1 >> 22 !== 0) {
+ $ERROR('#706: 1 >> 22 === 0. Actual: ' + (1 >> 22));
+}
+
+
+if (3 >> 22 !== 0) {
+ $ERROR('#707: 3 >> 22 === 0. Actual: ' + (3 >> 22));
+}
+
+
+if (7 >> 22 !== 0) {
+ $ERROR('#708: 7 >> 22 === 0. Actual: ' + (7 >> 22));
+}
+
+
+if (15 >> 22 !== 0) {
+ $ERROR('#709: 15 >> 22 === 0. Actual: ' + (15 >> 22));
+}
+
+
+if (31 >> 22 !== 0) {
+ $ERROR('#710: 31 >> 22 === 0. Actual: ' + (31 >> 22));
+}
+
+
+if (63 >> 22 !== 0) {
+ $ERROR('#711: 63 >> 22 === 0. Actual: ' + (63 >> 22));
+}
+
+
+if (127 >> 22 !== 0) {
+ $ERROR('#712: 127 >> 22 === 0. Actual: ' + (127 >> 22));
+}
+
+
+if (255 >> 22 !== 0) {
+ $ERROR('#713: 255 >> 22 === 0. Actual: ' + (255 >> 22));
+}
+
+
+if (511 >> 22 !== 0) {
+ $ERROR('#714: 511 >> 22 === 0. Actual: ' + (511 >> 22));
+}
+
+
+if (1023 >> 22 !== 0) {
+ $ERROR('#715: 1023 >> 22 === 0. Actual: ' + (1023 >> 22));
+}
+
+
+if (2047 >> 22 !== 0) {
+ $ERROR('#716: 2047 >> 22 === 0. Actual: ' + (2047 >> 22));
+}
+
+
+if (4095 >> 22 !== 0) {
+ $ERROR('#717: 4095 >> 22 === 0. Actual: ' + (4095 >> 22));
+}
+
+
+if (8191 >> 22 !== 0) {
+ $ERROR('#718: 8191 >> 22 === 0. Actual: ' + (8191 >> 22));
+}
+
+
+if (16383 >> 22 !== 0) {
+ $ERROR('#719: 16383 >> 22 === 0. Actual: ' + (16383 >> 22));
+}
+
+
+if (32767 >> 22 !== 0) {
+ $ERROR('#720: 32767 >> 22 === 0. Actual: ' + (32767 >> 22));
+}
+
+
+if (65535 >> 22 !== 0) {
+ $ERROR('#721: 65535 >> 22 === 0. Actual: ' + (65535 >> 22));
+}
+
+
+if (131071 >> 22 !== 0) {
+ $ERROR('#722: 131071 >> 22 === 0. Actual: ' + (131071 >> 22));
+}
+
+
+if (262143 >> 22 !== 0) {
+ $ERROR('#723: 262143 >> 22 === 0. Actual: ' + (262143 >> 22));
+}
+
+
+if (524287 >> 22 !== 0) {
+ $ERROR('#724: 524287 >> 22 === 0. Actual: ' + (524287 >> 22));
+}
+
+
+if (1048575 >> 22 !== 0) {
+ $ERROR('#725: 1048575 >> 22 === 0. Actual: ' + (1048575 >> 22));
+}
+
+
+if (2097151 >> 22 !== 0) {
+ $ERROR('#726: 2097151 >> 22 === 0. Actual: ' + (2097151 >> 22));
+}
+
+
+if (4194303 >> 22 !== 0) {
+ $ERROR('#727: 4194303 >> 22 === 0. Actual: ' + (4194303 >> 22));
+}
+
+
+if (8388607 >> 22 !== 1) {
+ $ERROR('#728: 8388607 >> 22 === 1. Actual: ' + (8388607 >> 22));
+}
+
+
+if (16777215 >> 22 !== 3) {
+ $ERROR('#729: 16777215 >> 22 === 3. Actual: ' + (16777215 >> 22));
+}
+
+
+if (33554431 >> 22 !== 7) {
+ $ERROR('#730: 33554431 >> 22 === 7. Actual: ' + (33554431 >> 22));
+}
+
+
+if (67108863 >> 22 !== 15) {
+ $ERROR('#731: 67108863 >> 22 === 15. Actual: ' + (67108863 >> 22));
+}
+
+
+if (134217727 >> 22 !== 31) {
+ $ERROR('#732: 134217727 >> 22 === 31. Actual: ' + (134217727 >> 22));
+}
+
+
+if (268435455 >> 22 !== 63) {
+ $ERROR('#733: 268435455 >> 22 === 63. Actual: ' + (268435455 >> 22));
+}
+
+
+if (536870911 >> 22 !== 127) {
+ $ERROR('#734: 536870911 >> 22 === 127. Actual: ' + (536870911 >> 22));
+}
+
+
+if (1073741823 >> 22 !== 255) {
+ $ERROR('#735: 1073741823 >> 22 === 255. Actual: ' + (1073741823 >> 22));
+}
+
+
+if (2147483647 >> 22 !== 511) {
+ $ERROR('#736: 2147483647 >> 22 === 511. Actual: ' + (2147483647 >> 22));
+}
+
+
+if (0 >> 23 !== 0) {
+ $ERROR('#737: 0 >> 23 === 0. Actual: ' + (0 >> 23));
+}
+
+
+if (1 >> 23 !== 0) {
+ $ERROR('#738: 1 >> 23 === 0. Actual: ' + (1 >> 23));
+}
+
+
+if (3 >> 23 !== 0) {
+ $ERROR('#739: 3 >> 23 === 0. Actual: ' + (3 >> 23));
+}
+
+
+if (7 >> 23 !== 0) {
+ $ERROR('#740: 7 >> 23 === 0. Actual: ' + (7 >> 23));
+}
+
+
+if (15 >> 23 !== 0) {
+ $ERROR('#741: 15 >> 23 === 0. Actual: ' + (15 >> 23));
+}
+
+
+if (31 >> 23 !== 0) {
+ $ERROR('#742: 31 >> 23 === 0. Actual: ' + (31 >> 23));
+}
+
+
+if (63 >> 23 !== 0) {
+ $ERROR('#743: 63 >> 23 === 0. Actual: ' + (63 >> 23));
+}
+
+
+if (127 >> 23 !== 0) {
+ $ERROR('#744: 127 >> 23 === 0. Actual: ' + (127 >> 23));
+}
+
+
+if (255 >> 23 !== 0) {
+ $ERROR('#745: 255 >> 23 === 0. Actual: ' + (255 >> 23));
+}
+
+
+if (511 >> 23 !== 0) {
+ $ERROR('#746: 511 >> 23 === 0. Actual: ' + (511 >> 23));
+}
+
+
+if (1023 >> 23 !== 0) {
+ $ERROR('#747: 1023 >> 23 === 0. Actual: ' + (1023 >> 23));
+}
+
+
+if (2047 >> 23 !== 0) {
+ $ERROR('#748: 2047 >> 23 === 0. Actual: ' + (2047 >> 23));
+}
+
+
+if (4095 >> 23 !== 0) {
+ $ERROR('#749: 4095 >> 23 === 0. Actual: ' + (4095 >> 23));
+}
+
+
+if (8191 >> 23 !== 0) {
+ $ERROR('#750: 8191 >> 23 === 0. Actual: ' + (8191 >> 23));
+}
+
+
+if (16383 >> 23 !== 0) {
+ $ERROR('#751: 16383 >> 23 === 0. Actual: ' + (16383 >> 23));
+}
+
+
+if (32767 >> 23 !== 0) {
+ $ERROR('#752: 32767 >> 23 === 0. Actual: ' + (32767 >> 23));
+}
+
+
+if (65535 >> 23 !== 0) {
+ $ERROR('#753: 65535 >> 23 === 0. Actual: ' + (65535 >> 23));
+}
+
+
+if (131071 >> 23 !== 0) {
+ $ERROR('#754: 131071 >> 23 === 0. Actual: ' + (131071 >> 23));
+}
+
+
+if (262143 >> 23 !== 0) {
+ $ERROR('#755: 262143 >> 23 === 0. Actual: ' + (262143 >> 23));
+}
+
+
+if (524287 >> 23 !== 0) {
+ $ERROR('#756: 524287 >> 23 === 0. Actual: ' + (524287 >> 23));
+}
+
+
+if (1048575 >> 23 !== 0) {
+ $ERROR('#757: 1048575 >> 23 === 0. Actual: ' + (1048575 >> 23));
+}
+
+
+if (2097151 >> 23 !== 0) {
+ $ERROR('#758: 2097151 >> 23 === 0. Actual: ' + (2097151 >> 23));
+}
+
+
+if (4194303 >> 23 !== 0) {
+ $ERROR('#759: 4194303 >> 23 === 0. Actual: ' + (4194303 >> 23));
+}
+
+
+if (8388607 >> 23 !== 0) {
+ $ERROR('#760: 8388607 >> 23 === 0. Actual: ' + (8388607 >> 23));
+}
+
+
+if (16777215 >> 23 !== 1) {
+ $ERROR('#761: 16777215 >> 23 === 1. Actual: ' + (16777215 >> 23));
+}
+
+
+if (33554431 >> 23 !== 3) {
+ $ERROR('#762: 33554431 >> 23 === 3. Actual: ' + (33554431 >> 23));
+}
+
+
+if (67108863 >> 23 !== 7) {
+ $ERROR('#763: 67108863 >> 23 === 7. Actual: ' + (67108863 >> 23));
+}
+
+
+if (134217727 >> 23 !== 15) {
+ $ERROR('#764: 134217727 >> 23 === 15. Actual: ' + (134217727 >> 23));
+}
+
+
+if (268435455 >> 23 !== 31) {
+ $ERROR('#765: 268435455 >> 23 === 31. Actual: ' + (268435455 >> 23));
+}
+
+
+if (536870911 >> 23 !== 63) {
+ $ERROR('#766: 536870911 >> 23 === 63. Actual: ' + (536870911 >> 23));
+}
+
+
+if (1073741823 >> 23 !== 127) {
+ $ERROR('#767: 1073741823 >> 23 === 127. Actual: ' + (1073741823 >> 23));
+}
+
+
+if (2147483647 >> 23 !== 255) {
+ $ERROR('#768: 2147483647 >> 23 === 255. Actual: ' + (2147483647 >> 23));
+}
+
+
+if (0 >> 24 !== 0) {
+ $ERROR('#769: 0 >> 24 === 0. Actual: ' + (0 >> 24));
+}
+
+
+if (1 >> 24 !== 0) {
+ $ERROR('#770: 1 >> 24 === 0. Actual: ' + (1 >> 24));
+}
+
+
+if (3 >> 24 !== 0) {
+ $ERROR('#771: 3 >> 24 === 0. Actual: ' + (3 >> 24));
+}
+
+
+if (7 >> 24 !== 0) {
+ $ERROR('#772: 7 >> 24 === 0. Actual: ' + (7 >> 24));
+}
+
+
+if (15 >> 24 !== 0) {
+ $ERROR('#773: 15 >> 24 === 0. Actual: ' + (15 >> 24));
+}
+
+
+if (31 >> 24 !== 0) {
+ $ERROR('#774: 31 >> 24 === 0. Actual: ' + (31 >> 24));
+}
+
+
+if (63 >> 24 !== 0) {
+ $ERROR('#775: 63 >> 24 === 0. Actual: ' + (63 >> 24));
+}
+
+
+if (127 >> 24 !== 0) {
+ $ERROR('#776: 127 >> 24 === 0. Actual: ' + (127 >> 24));
+}
+
+
+if (255 >> 24 !== 0) {
+ $ERROR('#777: 255 >> 24 === 0. Actual: ' + (255 >> 24));
+}
+
+
+if (511 >> 24 !== 0) {
+ $ERROR('#778: 511 >> 24 === 0. Actual: ' + (511 >> 24));
+}
+
+
+if (1023 >> 24 !== 0) {
+ $ERROR('#779: 1023 >> 24 === 0. Actual: ' + (1023 >> 24));
+}
+
+
+if (2047 >> 24 !== 0) {
+ $ERROR('#780: 2047 >> 24 === 0. Actual: ' + (2047 >> 24));
+}
+
+
+if (4095 >> 24 !== 0) {
+ $ERROR('#781: 4095 >> 24 === 0. Actual: ' + (4095 >> 24));
+}
+
+
+if (8191 >> 24 !== 0) {
+ $ERROR('#782: 8191 >> 24 === 0. Actual: ' + (8191 >> 24));
+}
+
+
+if (16383 >> 24 !== 0) {
+ $ERROR('#783: 16383 >> 24 === 0. Actual: ' + (16383 >> 24));
+}
+
+
+if (32767 >> 24 !== 0) {
+ $ERROR('#784: 32767 >> 24 === 0. Actual: ' + (32767 >> 24));
+}
+
+
+if (65535 >> 24 !== 0) {
+ $ERROR('#785: 65535 >> 24 === 0. Actual: ' + (65535 >> 24));
+}
+
+
+if (131071 >> 24 !== 0) {
+ $ERROR('#786: 131071 >> 24 === 0. Actual: ' + (131071 >> 24));
+}
+
+
+if (262143 >> 24 !== 0) {
+ $ERROR('#787: 262143 >> 24 === 0. Actual: ' + (262143 >> 24));
+}
+
+
+if (524287 >> 24 !== 0) {
+ $ERROR('#788: 524287 >> 24 === 0. Actual: ' + (524287 >> 24));
+}
+
+
+if (1048575 >> 24 !== 0) {
+ $ERROR('#789: 1048575 >> 24 === 0. Actual: ' + (1048575 >> 24));
+}
+
+
+if (2097151 >> 24 !== 0) {
+ $ERROR('#790: 2097151 >> 24 === 0. Actual: ' + (2097151 >> 24));
+}
+
+
+if (4194303 >> 24 !== 0) {
+ $ERROR('#791: 4194303 >> 24 === 0. Actual: ' + (4194303 >> 24));
+}
+
+
+if (8388607 >> 24 !== 0) {
+ $ERROR('#792: 8388607 >> 24 === 0. Actual: ' + (8388607 >> 24));
+}
+
+
+if (16777215 >> 24 !== 0) {
+ $ERROR('#793: 16777215 >> 24 === 0. Actual: ' + (16777215 >> 24));
+}
+
+
+if (33554431 >> 24 !== 1) {
+ $ERROR('#794: 33554431 >> 24 === 1. Actual: ' + (33554431 >> 24));
+}
+
+
+if (67108863 >> 24 !== 3) {
+ $ERROR('#795: 67108863 >> 24 === 3. Actual: ' + (67108863 >> 24));
+}
+
+
+if (134217727 >> 24 !== 7) {
+ $ERROR('#796: 134217727 >> 24 === 7. Actual: ' + (134217727 >> 24));
+}
+
+
+if (268435455 >> 24 !== 15) {
+ $ERROR('#797: 268435455 >> 24 === 15. Actual: ' + (268435455 >> 24));
+}
+
+
+if (536870911 >> 24 !== 31) {
+ $ERROR('#798: 536870911 >> 24 === 31. Actual: ' + (536870911 >> 24));
+}
+
+
+if (1073741823 >> 24 !== 63) {
+ $ERROR('#799: 1073741823 >> 24 === 63. Actual: ' + (1073741823 >> 24));
+}
+
+
+if (2147483647 >> 24 !== 127) {
+ $ERROR('#800: 2147483647 >> 24 === 127. Actual: ' + (2147483647 >> 24));
+}
+
+
+if (0 >> 25 !== 0) {
+ $ERROR('#801: 0 >> 25 === 0. Actual: ' + (0 >> 25));
+}
+
+
+if (1 >> 25 !== 0) {
+ $ERROR('#802: 1 >> 25 === 0. Actual: ' + (1 >> 25));
+}
+
+
+if (3 >> 25 !== 0) {
+ $ERROR('#803: 3 >> 25 === 0. Actual: ' + (3 >> 25));
+}
+
+
+if (7 >> 25 !== 0) {
+ $ERROR('#804: 7 >> 25 === 0. Actual: ' + (7 >> 25));
+}
+
+
+if (15 >> 25 !== 0) {
+ $ERROR('#805: 15 >> 25 === 0. Actual: ' + (15 >> 25));
+}
+
+
+if (31 >> 25 !== 0) {
+ $ERROR('#806: 31 >> 25 === 0. Actual: ' + (31 >> 25));
+}
+
+
+if (63 >> 25 !== 0) {
+ $ERROR('#807: 63 >> 25 === 0. Actual: ' + (63 >> 25));
+}
+
+
+if (127 >> 25 !== 0) {
+ $ERROR('#808: 127 >> 25 === 0. Actual: ' + (127 >> 25));
+}
+
+
+if (255 >> 25 !== 0) {
+ $ERROR('#809: 255 >> 25 === 0. Actual: ' + (255 >> 25));
+}
+
+
+if (511 >> 25 !== 0) {
+ $ERROR('#810: 511 >> 25 === 0. Actual: ' + (511 >> 25));
+}
+
+
+if (1023 >> 25 !== 0) {
+ $ERROR('#811: 1023 >> 25 === 0. Actual: ' + (1023 >> 25));
+}
+
+
+if (2047 >> 25 !== 0) {
+ $ERROR('#812: 2047 >> 25 === 0. Actual: ' + (2047 >> 25));
+}
+
+
+if (4095 >> 25 !== 0) {
+ $ERROR('#813: 4095 >> 25 === 0. Actual: ' + (4095 >> 25));
+}
+
+
+if (8191 >> 25 !== 0) {
+ $ERROR('#814: 8191 >> 25 === 0. Actual: ' + (8191 >> 25));
+}
+
+
+if (16383 >> 25 !== 0) {
+ $ERROR('#815: 16383 >> 25 === 0. Actual: ' + (16383 >> 25));
+}
+
+
+if (32767 >> 25 !== 0) {
+ $ERROR('#816: 32767 >> 25 === 0. Actual: ' + (32767 >> 25));
+}
+
+
+if (65535 >> 25 !== 0) {
+ $ERROR('#817: 65535 >> 25 === 0. Actual: ' + (65535 >> 25));
+}
+
+
+if (131071 >> 25 !== 0) {
+ $ERROR('#818: 131071 >> 25 === 0. Actual: ' + (131071 >> 25));
+}
+
+
+if (262143 >> 25 !== 0) {
+ $ERROR('#819: 262143 >> 25 === 0. Actual: ' + (262143 >> 25));
+}
+
+
+if (524287 >> 25 !== 0) {
+ $ERROR('#820: 524287 >> 25 === 0. Actual: ' + (524287 >> 25));
+}
+
+
+if (1048575 >> 25 !== 0) {
+ $ERROR('#821: 1048575 >> 25 === 0. Actual: ' + (1048575 >> 25));
+}
+
+
+if (2097151 >> 25 !== 0) {
+ $ERROR('#822: 2097151 >> 25 === 0. Actual: ' + (2097151 >> 25));
+}
+
+
+if (4194303 >> 25 !== 0) {
+ $ERROR('#823: 4194303 >> 25 === 0. Actual: ' + (4194303 >> 25));
+}
+
+
+if (8388607 >> 25 !== 0) {
+ $ERROR('#824: 8388607 >> 25 === 0. Actual: ' + (8388607 >> 25));
+}
+
+
+if (16777215 >> 25 !== 0) {
+ $ERROR('#825: 16777215 >> 25 === 0. Actual: ' + (16777215 >> 25));
+}
+
+
+if (33554431 >> 25 !== 0) {
+ $ERROR('#826: 33554431 >> 25 === 0. Actual: ' + (33554431 >> 25));
+}
+
+
+if (67108863 >> 25 !== 1) {
+ $ERROR('#827: 67108863 >> 25 === 1. Actual: ' + (67108863 >> 25));
+}
+
+
+if (134217727 >> 25 !== 3) {
+ $ERROR('#828: 134217727 >> 25 === 3. Actual: ' + (134217727 >> 25));
+}
+
+
+if (268435455 >> 25 !== 7) {
+ $ERROR('#829: 268435455 >> 25 === 7. Actual: ' + (268435455 >> 25));
+}
+
+
+if (536870911 >> 25 !== 15) {
+ $ERROR('#830: 536870911 >> 25 === 15. Actual: ' + (536870911 >> 25));
+}
+
+
+if (1073741823 >> 25 !== 31) {
+ $ERROR('#831: 1073741823 >> 25 === 31. Actual: ' + (1073741823 >> 25));
+}
+
+
+if (2147483647 >> 25 !== 63) {
+ $ERROR('#832: 2147483647 >> 25 === 63. Actual: ' + (2147483647 >> 25));
+}
+
+
+if (0 >> 26 !== 0) {
+ $ERROR('#833: 0 >> 26 === 0. Actual: ' + (0 >> 26));
+}
+
+
+if (1 >> 26 !== 0) {
+ $ERROR('#834: 1 >> 26 === 0. Actual: ' + (1 >> 26));
+}
+
+
+if (3 >> 26 !== 0) {
+ $ERROR('#835: 3 >> 26 === 0. Actual: ' + (3 >> 26));
+}
+
+
+if (7 >> 26 !== 0) {
+ $ERROR('#836: 7 >> 26 === 0. Actual: ' + (7 >> 26));
+}
+
+
+if (15 >> 26 !== 0) {
+ $ERROR('#837: 15 >> 26 === 0. Actual: ' + (15 >> 26));
+}
+
+
+if (31 >> 26 !== 0) {
+ $ERROR('#838: 31 >> 26 === 0. Actual: ' + (31 >> 26));
+}
+
+
+if (63 >> 26 !== 0) {
+ $ERROR('#839: 63 >> 26 === 0. Actual: ' + (63 >> 26));
+}
+
+
+if (127 >> 26 !== 0) {
+ $ERROR('#840: 127 >> 26 === 0. Actual: ' + (127 >> 26));
+}
+
+
+if (255 >> 26 !== 0) {
+ $ERROR('#841: 255 >> 26 === 0. Actual: ' + (255 >> 26));
+}
+
+
+if (511 >> 26 !== 0) {
+ $ERROR('#842: 511 >> 26 === 0. Actual: ' + (511 >> 26));
+}
+
+
+if (1023 >> 26 !== 0) {
+ $ERROR('#843: 1023 >> 26 === 0. Actual: ' + (1023 >> 26));
+}
+
+
+if (2047 >> 26 !== 0) {
+ $ERROR('#844: 2047 >> 26 === 0. Actual: ' + (2047 >> 26));
+}
+
+
+if (4095 >> 26 !== 0) {
+ $ERROR('#845: 4095 >> 26 === 0. Actual: ' + (4095 >> 26));
+}
+
+
+if (8191 >> 26 !== 0) {
+ $ERROR('#846: 8191 >> 26 === 0. Actual: ' + (8191 >> 26));
+}
+
+
+if (16383 >> 26 !== 0) {
+ $ERROR('#847: 16383 >> 26 === 0. Actual: ' + (16383 >> 26));
+}
+
+
+if (32767 >> 26 !== 0) {
+ $ERROR('#848: 32767 >> 26 === 0. Actual: ' + (32767 >> 26));
+}
+
+
+if (65535 >> 26 !== 0) {
+ $ERROR('#849: 65535 >> 26 === 0. Actual: ' + (65535 >> 26));
+}
+
+
+if (131071 >> 26 !== 0) {
+ $ERROR('#850: 131071 >> 26 === 0. Actual: ' + (131071 >> 26));
+}
+
+
+if (262143 >> 26 !== 0) {
+ $ERROR('#851: 262143 >> 26 === 0. Actual: ' + (262143 >> 26));
+}
+
+
+if (524287 >> 26 !== 0) {
+ $ERROR('#852: 524287 >> 26 === 0. Actual: ' + (524287 >> 26));
+}
+
+
+if (1048575 >> 26 !== 0) {
+ $ERROR('#853: 1048575 >> 26 === 0. Actual: ' + (1048575 >> 26));
+}
+
+
+if (2097151 >> 26 !== 0) {
+ $ERROR('#854: 2097151 >> 26 === 0. Actual: ' + (2097151 >> 26));
+}
+
+
+if (4194303 >> 26 !== 0) {
+ $ERROR('#855: 4194303 >> 26 === 0. Actual: ' + (4194303 >> 26));
+}
+
+
+if (8388607 >> 26 !== 0) {
+ $ERROR('#856: 8388607 >> 26 === 0. Actual: ' + (8388607 >> 26));
+}
+
+
+if (16777215 >> 26 !== 0) {
+ $ERROR('#857: 16777215 >> 26 === 0. Actual: ' + (16777215 >> 26));
+}
+
+
+if (33554431 >> 26 !== 0) {
+ $ERROR('#858: 33554431 >> 26 === 0. Actual: ' + (33554431 >> 26));
+}
+
+
+if (67108863 >> 26 !== 0) {
+ $ERROR('#859: 67108863 >> 26 === 0. Actual: ' + (67108863 >> 26));
+}
+
+
+if (134217727 >> 26 !== 1) {
+ $ERROR('#860: 134217727 >> 26 === 1. Actual: ' + (134217727 >> 26));
+}
+
+
+if (268435455 >> 26 !== 3) {
+ $ERROR('#861: 268435455 >> 26 === 3. Actual: ' + (268435455 >> 26));
+}
+
+
+if (536870911 >> 26 !== 7) {
+ $ERROR('#862: 536870911 >> 26 === 7. Actual: ' + (536870911 >> 26));
+}
+
+
+if (1073741823 >> 26 !== 15) {
+ $ERROR('#863: 1073741823 >> 26 === 15. Actual: ' + (1073741823 >> 26));
+}
+
+
+if (2147483647 >> 26 !== 31) {
+ $ERROR('#864: 2147483647 >> 26 === 31. Actual: ' + (2147483647 >> 26));
+}
+
+
+if (0 >> 27 !== 0) {
+ $ERROR('#865: 0 >> 27 === 0. Actual: ' + (0 >> 27));
+}
+
+
+if (1 >> 27 !== 0) {
+ $ERROR('#866: 1 >> 27 === 0. Actual: ' + (1 >> 27));
+}
+
+
+if (3 >> 27 !== 0) {
+ $ERROR('#867: 3 >> 27 === 0. Actual: ' + (3 >> 27));
+}
+
+
+if (7 >> 27 !== 0) {
+ $ERROR('#868: 7 >> 27 === 0. Actual: ' + (7 >> 27));
+}
+
+
+if (15 >> 27 !== 0) {
+ $ERROR('#869: 15 >> 27 === 0. Actual: ' + (15 >> 27));
+}
+
+
+if (31 >> 27 !== 0) {
+ $ERROR('#870: 31 >> 27 === 0. Actual: ' + (31 >> 27));
+}
+
+
+if (63 >> 27 !== 0) {
+ $ERROR('#871: 63 >> 27 === 0. Actual: ' + (63 >> 27));
+}
+
+
+if (127 >> 27 !== 0) {
+ $ERROR('#872: 127 >> 27 === 0. Actual: ' + (127 >> 27));
+}
+
+
+if (255 >> 27 !== 0) {
+ $ERROR('#873: 255 >> 27 === 0. Actual: ' + (255 >> 27));
+}
+
+
+if (511 >> 27 !== 0) {
+ $ERROR('#874: 511 >> 27 === 0. Actual: ' + (511 >> 27));
+}
+
+
+if (1023 >> 27 !== 0) {
+ $ERROR('#875: 1023 >> 27 === 0. Actual: ' + (1023 >> 27));
+}
+
+
+if (2047 >> 27 !== 0) {
+ $ERROR('#876: 2047 >> 27 === 0. Actual: ' + (2047 >> 27));
+}
+
+
+if (4095 >> 27 !== 0) {
+ $ERROR('#877: 4095 >> 27 === 0. Actual: ' + (4095 >> 27));
+}
+
+
+if (8191 >> 27 !== 0) {
+ $ERROR('#878: 8191 >> 27 === 0. Actual: ' + (8191 >> 27));
+}
+
+
+if (16383 >> 27 !== 0) {
+ $ERROR('#879: 16383 >> 27 === 0. Actual: ' + (16383 >> 27));
+}
+
+
+if (32767 >> 27 !== 0) {
+ $ERROR('#880: 32767 >> 27 === 0. Actual: ' + (32767 >> 27));
+}
+
+
+if (65535 >> 27 !== 0) {
+ $ERROR('#881: 65535 >> 27 === 0. Actual: ' + (65535 >> 27));
+}
+
+
+if (131071 >> 27 !== 0) {
+ $ERROR('#882: 131071 >> 27 === 0. Actual: ' + (131071 >> 27));
+}
+
+
+if (262143 >> 27 !== 0) {
+ $ERROR('#883: 262143 >> 27 === 0. Actual: ' + (262143 >> 27));
+}
+
+
+if (524287 >> 27 !== 0) {
+ $ERROR('#884: 524287 >> 27 === 0. Actual: ' + (524287 >> 27));
+}
+
+
+if (1048575 >> 27 !== 0) {
+ $ERROR('#885: 1048575 >> 27 === 0. Actual: ' + (1048575 >> 27));
+}
+
+
+if (2097151 >> 27 !== 0) {
+ $ERROR('#886: 2097151 >> 27 === 0. Actual: ' + (2097151 >> 27));
+}
+
+
+if (4194303 >> 27 !== 0) {
+ $ERROR('#887: 4194303 >> 27 === 0. Actual: ' + (4194303 >> 27));
+}
+
+
+if (8388607 >> 27 !== 0) {
+ $ERROR('#888: 8388607 >> 27 === 0. Actual: ' + (8388607 >> 27));
+}
+
+
+if (16777215 >> 27 !== 0) {
+ $ERROR('#889: 16777215 >> 27 === 0. Actual: ' + (16777215 >> 27));
+}
+
+
+if (33554431 >> 27 !== 0) {
+ $ERROR('#890: 33554431 >> 27 === 0. Actual: ' + (33554431 >> 27));
+}
+
+
+if (67108863 >> 27 !== 0) {
+ $ERROR('#891: 67108863 >> 27 === 0. Actual: ' + (67108863 >> 27));
+}
+
+
+if (134217727 >> 27 !== 0) {
+ $ERROR('#892: 134217727 >> 27 === 0. Actual: ' + (134217727 >> 27));
+}
+
+
+if (268435455 >> 27 !== 1) {
+ $ERROR('#893: 268435455 >> 27 === 1. Actual: ' + (268435455 >> 27));
+}
+
+
+if (536870911 >> 27 !== 3) {
+ $ERROR('#894: 536870911 >> 27 === 3. Actual: ' + (536870911 >> 27));
+}
+
+
+if (1073741823 >> 27 !== 7) {
+ $ERROR('#895: 1073741823 >> 27 === 7. Actual: ' + (1073741823 >> 27));
+}
+
+
+if (2147483647 >> 27 !== 15) {
+ $ERROR('#896: 2147483647 >> 27 === 15. Actual: ' + (2147483647 >> 27));
+}
+
+
+if (0 >> 28 !== 0) {
+ $ERROR('#897: 0 >> 28 === 0. Actual: ' + (0 >> 28));
+}
+
+
+if (1 >> 28 !== 0) {
+ $ERROR('#898: 1 >> 28 === 0. Actual: ' + (1 >> 28));
+}
+
+
+if (3 >> 28 !== 0) {
+ $ERROR('#899: 3 >> 28 === 0. Actual: ' + (3 >> 28));
+}
+
+
+if (7 >> 28 !== 0) {
+ $ERROR('#900: 7 >> 28 === 0. Actual: ' + (7 >> 28));
+}
+
+
+if (15 >> 28 !== 0) {
+ $ERROR('#901: 15 >> 28 === 0. Actual: ' + (15 >> 28));
+}
+
+
+if (31 >> 28 !== 0) {
+ $ERROR('#902: 31 >> 28 === 0. Actual: ' + (31 >> 28));
+}
+
+
+if (63 >> 28 !== 0) {
+ $ERROR('#903: 63 >> 28 === 0. Actual: ' + (63 >> 28));
+}
+
+
+if (127 >> 28 !== 0) {
+ $ERROR('#904: 127 >> 28 === 0. Actual: ' + (127 >> 28));
+}
+
+
+if (255 >> 28 !== 0) {
+ $ERROR('#905: 255 >> 28 === 0. Actual: ' + (255 >> 28));
+}
+
+
+if (511 >> 28 !== 0) {
+ $ERROR('#906: 511 >> 28 === 0. Actual: ' + (511 >> 28));
+}
+
+
+if (1023 >> 28 !== 0) {
+ $ERROR('#907: 1023 >> 28 === 0. Actual: ' + (1023 >> 28));
+}
+
+
+if (2047 >> 28 !== 0) {
+ $ERROR('#908: 2047 >> 28 === 0. Actual: ' + (2047 >> 28));
+}
+
+
+if (4095 >> 28 !== 0) {
+ $ERROR('#909: 4095 >> 28 === 0. Actual: ' + (4095 >> 28));
+}
+
+
+if (8191 >> 28 !== 0) {
+ $ERROR('#910: 8191 >> 28 === 0. Actual: ' + (8191 >> 28));
+}
+
+
+if (16383 >> 28 !== 0) {
+ $ERROR('#911: 16383 >> 28 === 0. Actual: ' + (16383 >> 28));
+}
+
+
+if (32767 >> 28 !== 0) {
+ $ERROR('#912: 32767 >> 28 === 0. Actual: ' + (32767 >> 28));
+}
+
+
+if (65535 >> 28 !== 0) {
+ $ERROR('#913: 65535 >> 28 === 0. Actual: ' + (65535 >> 28));
+}
+
+
+if (131071 >> 28 !== 0) {
+ $ERROR('#914: 131071 >> 28 === 0. Actual: ' + (131071 >> 28));
+}
+
+
+if (262143 >> 28 !== 0) {
+ $ERROR('#915: 262143 >> 28 === 0. Actual: ' + (262143 >> 28));
+}
+
+
+if (524287 >> 28 !== 0) {
+ $ERROR('#916: 524287 >> 28 === 0. Actual: ' + (524287 >> 28));
+}
+
+
+if (1048575 >> 28 !== 0) {
+ $ERROR('#917: 1048575 >> 28 === 0. Actual: ' + (1048575 >> 28));
+}
+
+
+if (2097151 >> 28 !== 0) {
+ $ERROR('#918: 2097151 >> 28 === 0. Actual: ' + (2097151 >> 28));
+}
+
+
+if (4194303 >> 28 !== 0) {
+ $ERROR('#919: 4194303 >> 28 === 0. Actual: ' + (4194303 >> 28));
+}
+
+
+if (8388607 >> 28 !== 0) {
+ $ERROR('#920: 8388607 >> 28 === 0. Actual: ' + (8388607 >> 28));
+}
+
+
+if (16777215 >> 28 !== 0) {
+ $ERROR('#921: 16777215 >> 28 === 0. Actual: ' + (16777215 >> 28));
+}
+
+
+if (33554431 >> 28 !== 0) {
+ $ERROR('#922: 33554431 >> 28 === 0. Actual: ' + (33554431 >> 28));
+}
+
+
+if (67108863 >> 28 !== 0) {
+ $ERROR('#923: 67108863 >> 28 === 0. Actual: ' + (67108863 >> 28));
+}
+
+
+if (134217727 >> 28 !== 0) {
+ $ERROR('#924: 134217727 >> 28 === 0. Actual: ' + (134217727 >> 28));
+}
+
+
+if (268435455 >> 28 !== 0) {
+ $ERROR('#925: 268435455 >> 28 === 0. Actual: ' + (268435455 >> 28));
+}
+
+
+if (536870911 >> 28 !== 1) {
+ $ERROR('#926: 536870911 >> 28 === 1. Actual: ' + (536870911 >> 28));
+}
+
+
+if (1073741823 >> 28 !== 3) {
+ $ERROR('#927: 1073741823 >> 28 === 3. Actual: ' + (1073741823 >> 28));
+}
+
+
+if (2147483647 >> 28 !== 7) {
+ $ERROR('#928: 2147483647 >> 28 === 7. Actual: ' + (2147483647 >> 28));
+}
+
+
+if (0 >> 29 !== 0) {
+ $ERROR('#929: 0 >> 29 === 0. Actual: ' + (0 >> 29));
+}
+
+
+if (1 >> 29 !== 0) {
+ $ERROR('#930: 1 >> 29 === 0. Actual: ' + (1 >> 29));
+}
+
+
+if (3 >> 29 !== 0) {
+ $ERROR('#931: 3 >> 29 === 0. Actual: ' + (3 >> 29));
+}
+
+
+if (7 >> 29 !== 0) {
+ $ERROR('#932: 7 >> 29 === 0. Actual: ' + (7 >> 29));
+}
+
+
+if (15 >> 29 !== 0) {
+ $ERROR('#933: 15 >> 29 === 0. Actual: ' + (15 >> 29));
+}
+
+
+if (31 >> 29 !== 0) {
+ $ERROR('#934: 31 >> 29 === 0. Actual: ' + (31 >> 29));
+}
+
+
+if (63 >> 29 !== 0) {
+ $ERROR('#935: 63 >> 29 === 0. Actual: ' + (63 >> 29));
+}
+
+
+if (127 >> 29 !== 0) {
+ $ERROR('#936: 127 >> 29 === 0. Actual: ' + (127 >> 29));
+}
+
+
+if (255 >> 29 !== 0) {
+ $ERROR('#937: 255 >> 29 === 0. Actual: ' + (255 >> 29));
+}
+
+
+if (511 >> 29 !== 0) {
+ $ERROR('#938: 511 >> 29 === 0. Actual: ' + (511 >> 29));
+}
+
+
+if (1023 >> 29 !== 0) {
+ $ERROR('#939: 1023 >> 29 === 0. Actual: ' + (1023 >> 29));
+}
+
+
+if (2047 >> 29 !== 0) {
+ $ERROR('#940: 2047 >> 29 === 0. Actual: ' + (2047 >> 29));
+}
+
+
+if (4095 >> 29 !== 0) {
+ $ERROR('#941: 4095 >> 29 === 0. Actual: ' + (4095 >> 29));
+}
+
+
+if (8191 >> 29 !== 0) {
+ $ERROR('#942: 8191 >> 29 === 0. Actual: ' + (8191 >> 29));
+}
+
+
+if (16383 >> 29 !== 0) {
+ $ERROR('#943: 16383 >> 29 === 0. Actual: ' + (16383 >> 29));
+}
+
+
+if (32767 >> 29 !== 0) {
+ $ERROR('#944: 32767 >> 29 === 0. Actual: ' + (32767 >> 29));
+}
+
+
+if (65535 >> 29 !== 0) {
+ $ERROR('#945: 65535 >> 29 === 0. Actual: ' + (65535 >> 29));
+}
+
+
+if (131071 >> 29 !== 0) {
+ $ERROR('#946: 131071 >> 29 === 0. Actual: ' + (131071 >> 29));
+}
+
+
+if (262143 >> 29 !== 0) {
+ $ERROR('#947: 262143 >> 29 === 0. Actual: ' + (262143 >> 29));
+}
+
+
+if (524287 >> 29 !== 0) {
+ $ERROR('#948: 524287 >> 29 === 0. Actual: ' + (524287 >> 29));
+}
+
+
+if (1048575 >> 29 !== 0) {
+ $ERROR('#949: 1048575 >> 29 === 0. Actual: ' + (1048575 >> 29));
+}
+
+
+if (2097151 >> 29 !== 0) {
+ $ERROR('#950: 2097151 >> 29 === 0. Actual: ' + (2097151 >> 29));
+}
+
+
+if (4194303 >> 29 !== 0) {
+ $ERROR('#951: 4194303 >> 29 === 0. Actual: ' + (4194303 >> 29));
+}
+
+
+if (8388607 >> 29 !== 0) {
+ $ERROR('#952: 8388607 >> 29 === 0. Actual: ' + (8388607 >> 29));
+}
+
+
+if (16777215 >> 29 !== 0) {
+ $ERROR('#953: 16777215 >> 29 === 0. Actual: ' + (16777215 >> 29));
+}
+
+
+if (33554431 >> 29 !== 0) {
+ $ERROR('#954: 33554431 >> 29 === 0. Actual: ' + (33554431 >> 29));
+}
+
+
+if (67108863 >> 29 !== 0) {
+ $ERROR('#955: 67108863 >> 29 === 0. Actual: ' + (67108863 >> 29));
+}
+
+
+if (134217727 >> 29 !== 0) {
+ $ERROR('#956: 134217727 >> 29 === 0. Actual: ' + (134217727 >> 29));
+}
+
+
+if (268435455 >> 29 !== 0) {
+ $ERROR('#957: 268435455 >> 29 === 0. Actual: ' + (268435455 >> 29));
+}
+
+
+if (536870911 >> 29 !== 0) {
+ $ERROR('#958: 536870911 >> 29 === 0. Actual: ' + (536870911 >> 29));
+}
+
+
+if (1073741823 >> 29 !== 1) {
+ $ERROR('#959: 1073741823 >> 29 === 1. Actual: ' + (1073741823 >> 29));
+}
+
+
+if (2147483647 >> 29 !== 3) {
+ $ERROR('#960: 2147483647 >> 29 === 3. Actual: ' + (2147483647 >> 29));
+}
+
+
+if (0 >> 30 !== 0) {
+ $ERROR('#961: 0 >> 30 === 0. Actual: ' + (0 >> 30));
+}
+
+
+if (1 >> 30 !== 0) {
+ $ERROR('#962: 1 >> 30 === 0. Actual: ' + (1 >> 30));
+}
+
+
+if (3 >> 30 !== 0) {
+ $ERROR('#963: 3 >> 30 === 0. Actual: ' + (3 >> 30));
+}
+
+
+if (7 >> 30 !== 0) {
+ $ERROR('#964: 7 >> 30 === 0. Actual: ' + (7 >> 30));
+}
+
+
+if (15 >> 30 !== 0) {
+ $ERROR('#965: 15 >> 30 === 0. Actual: ' + (15 >> 30));
+}
+
+
+if (31 >> 30 !== 0) {
+ $ERROR('#966: 31 >> 30 === 0. Actual: ' + (31 >> 30));
+}
+
+
+if (63 >> 30 !== 0) {
+ $ERROR('#967: 63 >> 30 === 0. Actual: ' + (63 >> 30));
+}
+
+
+if (127 >> 30 !== 0) {
+ $ERROR('#968: 127 >> 30 === 0. Actual: ' + (127 >> 30));
+}
+
+
+if (255 >> 30 !== 0) {
+ $ERROR('#969: 255 >> 30 === 0. Actual: ' + (255 >> 30));
+}
+
+
+if (511 >> 30 !== 0) {
+ $ERROR('#970: 511 >> 30 === 0. Actual: ' + (511 >> 30));
+}
+
+
+if (1023 >> 30 !== 0) {
+ $ERROR('#971: 1023 >> 30 === 0. Actual: ' + (1023 >> 30));
+}
+
+
+if (2047 >> 30 !== 0) {
+ $ERROR('#972: 2047 >> 30 === 0. Actual: ' + (2047 >> 30));
+}
+
+
+if (4095 >> 30 !== 0) {
+ $ERROR('#973: 4095 >> 30 === 0. Actual: ' + (4095 >> 30));
+}
+
+
+if (8191 >> 30 !== 0) {
+ $ERROR('#974: 8191 >> 30 === 0. Actual: ' + (8191 >> 30));
+}
+
+
+if (16383 >> 30 !== 0) {
+ $ERROR('#975: 16383 >> 30 === 0. Actual: ' + (16383 >> 30));
+}
+
+
+if (32767 >> 30 !== 0) {
+ $ERROR('#976: 32767 >> 30 === 0. Actual: ' + (32767 >> 30));
+}
+
+
+if (65535 >> 30 !== 0) {
+ $ERROR('#977: 65535 >> 30 === 0. Actual: ' + (65535 >> 30));
+}
+
+
+if (131071 >> 30 !== 0) {
+ $ERROR('#978: 131071 >> 30 === 0. Actual: ' + (131071 >> 30));
+}
+
+
+if (262143 >> 30 !== 0) {
+ $ERROR('#979: 262143 >> 30 === 0. Actual: ' + (262143 >> 30));
+}
+
+
+if (524287 >> 30 !== 0) {
+ $ERROR('#980: 524287 >> 30 === 0. Actual: ' + (524287 >> 30));
+}
+
+
+if (1048575 >> 30 !== 0) {
+ $ERROR('#981: 1048575 >> 30 === 0. Actual: ' + (1048575 >> 30));
+}
+
+
+if (2097151 >> 30 !== 0) {
+ $ERROR('#982: 2097151 >> 30 === 0. Actual: ' + (2097151 >> 30));
+}
+
+
+if (4194303 >> 30 !== 0) {
+ $ERROR('#983: 4194303 >> 30 === 0. Actual: ' + (4194303 >> 30));
+}
+
+
+if (8388607 >> 30 !== 0) {
+ $ERROR('#984: 8388607 >> 30 === 0. Actual: ' + (8388607 >> 30));
+}
+
+
+if (16777215 >> 30 !== 0) {
+ $ERROR('#985: 16777215 >> 30 === 0. Actual: ' + (16777215 >> 30));
+}
+
+
+if (33554431 >> 30 !== 0) {
+ $ERROR('#986: 33554431 >> 30 === 0. Actual: ' + (33554431 >> 30));
+}
+
+
+if (67108863 >> 30 !== 0) {
+ $ERROR('#987: 67108863 >> 30 === 0. Actual: ' + (67108863 >> 30));
+}
+
+
+if (134217727 >> 30 !== 0) {
+ $ERROR('#988: 134217727 >> 30 === 0. Actual: ' + (134217727 >> 30));
+}
+
+
+if (268435455 >> 30 !== 0) {
+ $ERROR('#989: 268435455 >> 30 === 0. Actual: ' + (268435455 >> 30));
+}
+
+
+if (536870911 >> 30 !== 0) {
+ $ERROR('#990: 536870911 >> 30 === 0. Actual: ' + (536870911 >> 30));
+}
+
+
+if (1073741823 >> 30 !== 0) {
+ $ERROR('#991: 1073741823 >> 30 === 0. Actual: ' + (1073741823 >> 30));
+}
+
+
+if (2147483647 >> 30 !== 1) {
+ $ERROR('#992: 2147483647 >> 30 === 1. Actual: ' + (2147483647 >> 30));
+}
+
+
+if (0 >> 31 !== 0) {
+ $ERROR('#993: 0 >> 31 === 0. Actual: ' + (0 >> 31));
+}
+
+
+if (1 >> 31 !== 0) {
+ $ERROR('#994: 1 >> 31 === 0. Actual: ' + (1 >> 31));
+}
+
+
+if (3 >> 31 !== 0) {
+ $ERROR('#995: 3 >> 31 === 0. Actual: ' + (3 >> 31));
+}
+
+
+if (7 >> 31 !== 0) {
+ $ERROR('#996: 7 >> 31 === 0. Actual: ' + (7 >> 31));
+}
+
+
+if (15 >> 31 !== 0) {
+ $ERROR('#997: 15 >> 31 === 0. Actual: ' + (15 >> 31));
+}
+
+
+if (31 >> 31 !== 0) {
+ $ERROR('#998: 31 >> 31 === 0. Actual: ' + (31 >> 31));
+}
+
+
+if (63 >> 31 !== 0) {
+ $ERROR('#999: 63 >> 31 === 0. Actual: ' + (63 >> 31));
+}
+
+
+if (127 >> 31 !== 0) {
+ $ERROR('#1000: 127 >> 31 === 0. Actual: ' + (127 >> 31));
+}
+
+
+if (255 >> 31 !== 0) {
+ $ERROR('#1001: 255 >> 31 === 0. Actual: ' + (255 >> 31));
+}
+
+
+if (511 >> 31 !== 0) {
+ $ERROR('#1002: 511 >> 31 === 0. Actual: ' + (511 >> 31));
+}
+
+
+if (1023 >> 31 !== 0) {
+ $ERROR('#1003: 1023 >> 31 === 0. Actual: ' + (1023 >> 31));
+}
+
+
+if (2047 >> 31 !== 0) {
+ $ERROR('#1004: 2047 >> 31 === 0. Actual: ' + (2047 >> 31));
+}
+
+
+if (4095 >> 31 !== 0) {
+ $ERROR('#1005: 4095 >> 31 === 0. Actual: ' + (4095 >> 31));
+}
+
+
+if (8191 >> 31 !== 0) {
+ $ERROR('#1006: 8191 >> 31 === 0. Actual: ' + (8191 >> 31));
+}
+
+
+if (16383 >> 31 !== 0) {
+ $ERROR('#1007: 16383 >> 31 === 0. Actual: ' + (16383 >> 31));
+}
+
+
+if (32767 >> 31 !== 0) {
+ $ERROR('#1008: 32767 >> 31 === 0. Actual: ' + (32767 >> 31));
+}
+
+
+if (65535 >> 31 !== 0) {
+ $ERROR('#1009: 65535 >> 31 === 0. Actual: ' + (65535 >> 31));
+}
+
+
+if (131071 >> 31 !== 0) {
+ $ERROR('#1010: 131071 >> 31 === 0. Actual: ' + (131071 >> 31));
+}
+
+
+if (262143 >> 31 !== 0) {
+ $ERROR('#1011: 262143 >> 31 === 0. Actual: ' + (262143 >> 31));
+}
+
+
+if (524287 >> 31 !== 0) {
+ $ERROR('#1012: 524287 >> 31 === 0. Actual: ' + (524287 >> 31));
+}
+
+
+if (1048575 >> 31 !== 0) {
+ $ERROR('#1013: 1048575 >> 31 === 0. Actual: ' + (1048575 >> 31));
+}
+
+
+if (2097151 >> 31 !== 0) {
+ $ERROR('#1014: 2097151 >> 31 === 0. Actual: ' + (2097151 >> 31));
+}
+
+
+if (4194303 >> 31 !== 0) {
+ $ERROR('#1015: 4194303 >> 31 === 0. Actual: ' + (4194303 >> 31));
+}
+
+
+if (8388607 >> 31 !== 0) {
+ $ERROR('#1016: 8388607 >> 31 === 0. Actual: ' + (8388607 >> 31));
+}
+
+
+if (16777215 >> 31 !== 0) {
+ $ERROR('#1017: 16777215 >> 31 === 0. Actual: ' + (16777215 >> 31));
+}
+
+
+if (33554431 >> 31 !== 0) {
+ $ERROR('#1018: 33554431 >> 31 === 0. Actual: ' + (33554431 >> 31));
+}
+
+
+if (67108863 >> 31 !== 0) {
+ $ERROR('#1019: 67108863 >> 31 === 0. Actual: ' + (67108863 >> 31));
+}
+
+
+if (134217727 >> 31 !== 0) {
+ $ERROR('#1020: 134217727 >> 31 === 0. Actual: ' + (134217727 >> 31));
+}
+
+
+if (268435455 >> 31 !== 0) {
+ $ERROR('#1021: 268435455 >> 31 === 0. Actual: ' + (268435455 >> 31));
+}
+
+
+if (536870911 >> 31 !== 0) {
+ $ERROR('#1022: 536870911 >> 31 === 0. Actual: ' + (536870911 >> 31));
+}
+
+
+if (1073741823 >> 31 !== 0) {
+ $ERROR('#1023: 1073741823 >> 31 === 0. Actual: ' + (1073741823 >> 31));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A5.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A5.1_T1.js
new file mode 100644
index 000000000..f3e7ce045
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A5.1_T1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A5.1_T1;
+ * @section: 11.7.2, 9.5;
+ * @assertion: Operator x >> y uses ToInt32(ShiftExpression);
+ * @description: Checking boundary points;
+ */
+
+//CHECK#1
+if (2147483648.1 >> 0 !== -2147483648) {
+ $ERROR('#1: 2147483648.1 >> 0 === -2147483648. Actual: ' + (2147483648.1 >> 0));
+}
+
+//CHECK#2
+if (4294967296.1 >> 0 !== 0) {
+ $ERROR('#2: 4294967296.1 >> 0 === 0. Actual: ' + (4294967296.1 >> 0));
+}
+
+//CHECK#3
+if (6442450944.1 >> 0 !== -2147483648) {
+ $ERROR('#3: 6442450944.1 >> 0 === -2147483648. Actual: ' + (6442450944.1 >> 0));
+}
+
+//CHECK#4
+if (4294967295.1 >> 0 !== -1) {
+ $ERROR('#4: 4294967295.1 >> 0 === -1. Actual: ' + (4294967295.1 >> 0));
+}
+
+//CHECK#5
+if (6442450943.1 >> 0 !== 2147483647) {
+ $ERROR('#5: 6442450943.1 >> 0 === 2147483647. Actual: ' + (6442450943.1 >> 0));
+}
+
+//CHECK#6
+if (-2147483649.1 >> 0 !== 2147483647) {
+ $ERROR('#6: -2147483649.1 >> 0 === 2147483647. Actual: ' + (-2147483649.1 >> 0));
+}
+
+//CHECK#7
+if (-4294967297.1 >> 0 !== -1) {
+ $ERROR('#7: -4294967297.1 >> 0 === -1. Actual: ' + (-4294967297.1 >> 0));
+}
+
+//CHECK#8
+if (-6442450945.1 >> 0 !== 2147483647) {
+ $ERROR('#8: -6442450945.1 >> 0 === 2147483647. Actual: ' + (-6442450945.1 >> 0));
+}
+
+//CHECK#9
+if (-4294967296.1 >> 0 !== 0) {
+ $ERROR('#9: -4294967296.1 >> 0 === 0 . Actual: ' + (-4294967296.1 >> 0));
+}
+
+//CHECK#10
+if (-6442450944.1 >> 0 !== -2147483648) {
+ $ERROR('#10: -6442450944.1 >> 0 === -2147483648. Actual: ' + (-6442450944.1 >> 0));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A5.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A5.2_T1.js
new file mode 100644
index 000000000..3c0d7f991
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.2_The_Sign_Left_shift_Operator/S11.7.2_A5.2_T1.js
@@ -0,0 +1,329 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.2_A5.2_T1;
+ * @section: 11.7.2, 9.5;
+ * @assertion: Operator x >> y uses ToUint32(AdditiveExpression) & 31;
+ * @description: Checking distinct points;
+ */
+
+//CHECK#1
+if (2147483647 >> -32.1 !== 2147483647) {
+ $ERROR('#1: 2147483647 >> -32.1 === 2147483647. Actual: ' + (2147483647 >> -32.1));
+}
+
+//CHECK#2
+if (2147483647 >> -31.1 !== 1073741823) {
+ $ERROR('#2: 2147483647 >> -31.1 === 1073741823. Actual: ' + (2147483647 >> -31.1));
+}
+
+//CHECK#3
+if (2147483647 >> -30.1 !== 536870911) {
+ $ERROR('#3: 2147483647 >> -30.1 === 536870911. Actual: ' + (2147483647 >> -30.1));
+}
+
+//CHECK#4
+if (2147483647 >> -29.1 !== 268435455) {
+ $ERROR('#4: 2147483647 >> -29.1 === 268435455. Actual: ' + (2147483647 >> -29.1));
+}
+
+//CHECK#5
+if (2147483647 >> -28.1 !== 134217727) {
+ $ERROR('#5: 2147483647 >> -28.1 === 134217727. Actual: ' + (2147483647 >> -28.1));
+}
+
+//CHECK#6
+if (2147483647 >> -27.1 !== 67108863) {
+ $ERROR('#6: 2147483647 >> -27.1 === 67108863. Actual: ' + (2147483647 >> -27.1));
+}
+
+//CHECK#7
+if (2147483647 >> -26.1 !== 33554431) {
+ $ERROR('#7: 2147483647 >> -26.1 === 33554431. Actual: ' + (2147483647 >> -26.1));
+}
+
+//CHECK#8
+if (2147483647 >> -25.1 !== 16777215) {
+ $ERROR('#8: 2147483647 >> -25.1 === 16777215. Actual: ' + (2147483647 >> -25.1));
+}
+
+//CHECK#9
+if (2147483647 >> -24.1 !== 8388607) {
+ $ERROR('#9: 2147483647 >> -24.1 === 8388607. Actual: ' + (2147483647 >> -24.1));
+}
+
+//CHECK#10
+if (2147483647 >> -23.1 !== 4194303) {
+ $ERROR('#10: 2147483647 >> -23.1 === 4194303. Actual: ' + (2147483647 >> -23.1));
+}
+
+//CHECK#11
+if (2147483647 >> -22.1 !== 2097151) {
+ $ERROR('#11: 2147483647 >> -22.1 === 2097151. Actual: ' + (2147483647 >> -22.1));
+}
+
+//CHECK#12
+if (2147483647 >> -21.1 !== 1048575) {
+ $ERROR('#12: 2147483647 >> -21.1 === 1048575. Actual: ' + (2147483647 >> -21.1));
+}
+
+//CHECK#13
+if (2147483647 >> -20.1 !== 524287) {
+ $ERROR('#13: 2147483647 >> -20.1 === 524287. Actual: ' + (2147483647 >> -20.1));
+}
+
+//CHECK#14
+if (2147483647 >> -19.1 !== 262143) {
+ $ERROR('#14: 2147483647 >> -19.1 === 262143. Actual: ' + (2147483647 >> -19.1));
+}
+
+//CHECK#15
+if (2147483647 >> -18.1 !== 131071) {
+ $ERROR('#15: 2147483647 >> -18.1 === 131071. Actual: ' + (2147483647 >> -18.1));
+}
+
+//CHECK#16
+if (2147483647 >> -17.1 !== 65535) {
+ $ERROR('#16: 2147483647 >> -17.1 === 65535. Actual: ' + (2147483647 >> -17.1));
+}
+
+//CHECK#17
+if (2147483647 >> -16.1 !== 32767) {
+ $ERROR('#17: 2147483647 >> -16.1 === 32767. Actual: ' + (2147483647 >> -16.1));
+}
+
+//CHECK#18
+if (2147483647 >> -15.1 !== 16383) {
+ $ERROR('#18: 2147483647 >> -15.1 === 16383. Actual: ' + (2147483647 >> -15.1));
+}
+
+//CHECK#19
+if (2147483647 >> -14.1 !== 8191) {
+ $ERROR('#19: 2147483647 >> -14.1 === 8191. Actual: ' + (2147483647 >> -14.1));
+}
+
+//CHECK#20
+if (2147483647 >> -13.1 !== 4095) {
+ $ERROR('#20: 2147483647 >> -13.1 === 4095. Actual: ' + (2147483647 >> -13.1));
+}
+
+//CHECK#21
+if (2147483647 >> -12.1 !== 2047) {
+ $ERROR('#21: 2147483647 >> -12.1 === 2047. Actual: ' + (2147483647 >> -12.1));
+}
+
+//CHECK#22
+if (2147483647 >> -11.1 !== 1023) {
+ $ERROR('#22: 2147483647 >> -11.1 === 1023. Actual: ' + (2147483647 >> -11.1));
+}
+
+//CHECK#23
+if (2147483647 >> -10.1 !== 511) {
+ $ERROR('#23: 2147483647 >> -10.1 === 511. Actual: ' + (2147483647 >> -10.1));
+}
+
+//CHECK#24
+if (2147483647 >> -9.1 !== 255) {
+ $ERROR('#24: 2147483647 >> -9.1 === 255. Actual: ' + (2147483647 >> -9.1));
+}
+
+//CHECK#25
+if (2147483647 >> -8.1 !== 127) {
+ $ERROR('#25: 2147483647 >> -8.1 === 127. Actual: ' + (2147483647 >> -8.1));
+}
+
+//CHECK#26
+if (2147483647 >> -7.1 !== 63) {
+ $ERROR('#26: 2147483647 >> -7.1 === 63. Actual: ' + (2147483647 >> -7.1));
+}
+
+//CHECK#27
+if (2147483647 >> -6.1 !== 31) {
+ $ERROR('#27: 2147483647 >> -6.1 === 31. Actual: ' + (2147483647 >> -6.1));
+}
+
+//CHECK#28
+if (2147483647 >> -5.1 !== 15) {
+ $ERROR('#28: 2147483647 >> -5.1 === 15. Actual: ' + (2147483647 >> -5.1));
+}
+
+//CHECK#29
+if (2147483647 >> -4.1 !== 7) {
+ $ERROR('#29: 2147483647 >> -4.1 === 7. Actual: ' + (2147483647 >> -4.1));
+}
+
+//CHECK#30
+if (2147483647 >> -3.1 !== 3) {
+ $ERROR('#30: 2147483647 >> -3.1 === 3. Actual: ' + (2147483647 >> -3.1));
+}
+
+//CHECK#31
+if (2147483647 >> -2.1 !== 1) {
+ $ERROR('#31: 2147483647 >> -2.1 === 1. Actual: ' + (2147483647 >> -2.1));
+}
+
+//CHECK#32
+if (2147483647 >> -1.1 !== 0) {
+ $ERROR('#32: 2147483647 >> -1.1 === 0. Actual: ' + (2147483647 >> -1.1));
+}
+
+//CHECK#33
+if (2147483647 >> 32.1 !== 2147483647) {
+ $ERROR('#33: 2147483647 >> 32.1 === 2147483647. Actual: ' + (2147483647 >> 32.1));
+}
+
+//CHECK#34
+if (2147483647 >> 33.1 !== 1073741823) {
+ $ERROR('#34: 2147483647 >> 33.1 === 1073741823. Actual: ' + (2147483647 >> 33.1));
+}
+
+//CHECK#35
+if (2147483647 >> 34.1 !== 536870911) {
+ $ERROR('#35: 2147483647 >> 34.1 === 536870911. Actual: ' + (2147483647 >> 34.1));
+}
+
+//CHECK#36
+if (2147483647 >> 35.1 !== 268435455) {
+ $ERROR('#36: 2147483647 >> 35.1 === 268435455. Actual: ' + (2147483647 >> 35.1));
+}
+
+//CHECK#37
+if (2147483647 >> 36.1 !== 134217727) {
+ $ERROR('#37: 2147483647 >> 36.1 === 134217727. Actual: ' + (2147483647 >> 36.1));
+}
+
+//CHECK#38
+if (2147483647 >> 37.1 !== 67108863) {
+ $ERROR('#38: 2147483647 >> 37.1 === 67108863. Actual: ' + (2147483647 >> 37.1));
+}
+
+//CHECK#39
+if (2147483647 >> 38.1 !== 33554431) {
+ $ERROR('#39: 2147483647 >> 38.1 === 33554431. Actual: ' + (2147483647 >> 38.1));
+}
+
+//CHECK#40
+if (2147483647 >> 39.1 !== 16777215) {
+ $ERROR('#40: 2147483647 >> 39.1 === 16777215. Actual: ' + (2147483647 >> 39.1));
+}
+
+//CHECK#41
+if (2147483647 >> 40.1 !== 8388607) {
+ $ERROR('#41: 2147483647 >> 40.1 === 8388607. Actual: ' + (2147483647 >> 40.1));
+}
+
+//CHECK#42
+if (2147483647 >> 41.1 !== 4194303) {
+ $ERROR('#42: 2147483647 >> 41.1 === 4194303. Actual: ' + (2147483647 >> 41.1));
+}
+
+//CHECK#43
+if (2147483647 >> 42.1 !== 2097151) {
+ $ERROR('#43: 2147483647 >> 42.1 === 2097151. Actual: ' + (2147483647 >> 42.1));
+}
+
+//CHECK#44
+if (2147483647 >> 43.1 !== 1048575) {
+ $ERROR('#44: 2147483647 >> 43.1 === 1048575. Actual: ' + (2147483647 >> 43.1));
+}
+
+//CHECK#45
+if (2147483647 >> 44.1 !== 524287) {
+ $ERROR('#45: 2147483647 >> 44.1 === 524287. Actual: ' + (2147483647 >> 44.1));
+}
+
+//CHECK#46
+if (2147483647 >> 45.1 !== 262143) {
+ $ERROR('#46: 2147483647 >> 45.1 === 262143. Actual: ' + (2147483647 >> 45.1));
+}
+
+//CHECK#47
+if (2147483647 >> 46.1 !== 131071) {
+ $ERROR('#47: 2147483647 >> 46.1 === 131071. Actual: ' + (2147483647 >> 46.1));
+}
+
+//CHECK#48
+if (2147483647 >> 47.1 !== 65535) {
+ $ERROR('#48: 2147483647 >> 47.1 === 65535. Actual: ' + (2147483647 >> 47.1));
+}
+
+//CHECK#49
+if (2147483647 >> 48.1 !== 32767) {
+ $ERROR('#49: 2147483647 >> 48.1 === 32767. Actual: ' + (2147483647 >> 48.1));
+}
+
+//CHECK#50
+if (2147483647 >> 49.1 !== 16383) {
+ $ERROR('#50: 2147483647 >> 49.1 === 16383. Actual: ' + (2147483647 >> 49.1));
+}
+
+//CHECK#51
+if (2147483647 >> 50.1 !== 8191) {
+ $ERROR('#51: 2147483647 >> 50.1 === 8191. Actual: ' + (2147483647 >> 50.1));
+}
+
+//CHECK#52
+if (2147483647 >> 51.1 !== 4095) {
+ $ERROR('#52: 2147483647 >> 51.1 === 4095. Actual: ' + (2147483647 >> 51.1));
+}
+
+//CHECK#53
+if (2147483647 >> 52.1 !== 2047) {
+ $ERROR('#53: 2147483647 >> 52.1 === 2047. Actual: ' + (2147483647 >> 52.1));
+}
+
+//CHECK#54
+if (2147483647 >> 53.1 !== 1023) {
+ $ERROR('#54: 2147483647 >> 53.1 === 1023. Actual: ' + (2147483647 >> 53.1));
+}
+
+//CHECK#55
+if (2147483647 >> 54.1 !== 511) {
+ $ERROR('#55: 2147483647 >> 54.1 === 511. Actual: ' + (2147483647 >> 54.1));
+}
+
+//CHECK#56
+if (2147483647 >> 55.1 !== 255) {
+ $ERROR('#56: 2147483647 >> 55.1 === 255. Actual: ' + (2147483647 >> 55.1));
+}
+
+//CHECK#57
+if (2147483647 >> 56.1 !== 127) {
+ $ERROR('#57: 2147483647 >> 56.1 === 127. Actual: ' + (2147483647 >> 56.1));
+}
+
+//CHECK#58
+if (2147483647 >> 57.1 !== 63) {
+ $ERROR('#58: 2147483647 >> 57.1 === 63. Actual: ' + (2147483647 >> 57.1));
+}
+
+//CHECK#59
+if (2147483647 >> 58.1 !== 31) {
+ $ERROR('#59: 2147483647 >> 58.1 === 31. Actual: ' + (2147483647 >> 58.1));
+}
+
+//CHECK#60
+if (2147483647 >> 59.1 !== 15) {
+ $ERROR('#60: 2147483647 >> 59.1 === 15. Actual: ' + (2147483647 >> 59.1));
+}
+
+//CHECK#61
+if (2147483647 >> 60.1 !== 7) {
+ $ERROR('#61: 2147483647 >> 60.1 === 7. Actual: ' + (2147483647 >> 60.1));
+}
+
+//CHECK#62
+if (2147483647 >> 61.1 !== 3) {
+ $ERROR('#62: 2147483647 >> 61.1 === 3. Actual: ' + (2147483647 >> 61.1));
+}
+
+//CHECK#63
+if (2147483647 >> 62.1 !== 1) {
+ $ERROR('#63: 2147483647 >> 62.1 === 1. Actual: ' + (2147483647 >> 62.1));
+}
+
+//CHECK#64
+if (2147483647 >> 63.1 !== 0) {
+ $ERROR('#64: 2147483647 >> 63.1 === 0. Actual: ' + (2147483647 >> 63.1));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A1.js
new file mode 100644
index 000000000..f59aa722f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.7.3_A1;
+* @section: 11.7.3, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between ShiftExpression and ">>>" or between ">>>" and AdditiveExpression are allowed;
+* @description: Checking by using eval
+*/
+
+//CHECK#1
+if (eval("-4\u0009>>>\u00091") !== 2147483646) {
+ $ERROR('#1: -4\\u0009>>>\\u00091 === 2147483646');
+}
+
+//CHECK#2
+if (eval("-4\u000B>>>\u000B1") !== 2147483646) {
+ $ERROR('#2: -4\\u000B>>>\\u000B1 === 2147483646');
+}
+
+//CHECK#3
+if (eval("-4\u000C>>>\u000C1") !== 2147483646) {
+ $ERROR('#3: -4\\u000C>>>\\u000C1 === 2147483646');
+}
+
+//CHECK#4
+if (eval("-4\u0020>>>\u00201") !== 2147483646) {
+ $ERROR('#4: -4\\u0020>>>\\u00201 === 2147483646');
+}
+
+//CHECK#5
+if (eval("-4\u00A0>>>\u00A01") !== 2147483646) {
+ $ERROR('#5: -4\\u00A0>>>\\u00A01 === 2147483646');
+}
+
+//CHECK#6
+if (eval("-4\u000A>>>\u000A1") !== 2147483646) {
+ $ERROR('#6: -4\\u000A>>>\\u000A1 === 2147483646');
+}
+
+//CHECK#7
+if (eval("-4\u000D>>>\u000D1") !== 2147483646) {
+ $ERROR('#7: -4\\u000D>>>\\u000D1 === 2147483646');
+}
+
+//CHECK#8
+if (eval("-4\u2028>>>\u20281") !== 2147483646) {
+ $ERROR('#8: -4\\u2028>>>\\u20281 === 2147483646');
+}
+
+//CHECK#9
+if (eval("-4\u2029>>>\u20291") !== 2147483646) {
+ $ERROR('#9: -4\\u2029>>>\\u20291 === 2147483646');
+}
+
+//CHECK#10
+if (eval("-4\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029>>>\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== 2147483646) {
+ $ERROR('#10: -4\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029>>>\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291 === 2147483646');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T1.js
new file mode 100644
index 000000000..075e1a282
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.7.3_A2.1_T1;
+* @section: 11.7.3;
+* @assertion: Operator x >>> y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (-4 >>> 1 !== 2147483646) {
+ $ERROR('#1: -4 >>> 1 === 2147483646. Actual: ' + (-4 >>> 1));
+}
+
+//CHECK#2
+var x = -4;
+if (x >>> 1 !== 2147483646) {
+ $ERROR('#2: var x = -4; x >>> 1 === 2147483646. Actual: ' + (x >>> 1));
+}
+
+//CHECK#3
+var y = 1;
+if (-4 >>> y !== 2147483646) {
+ $ERROR('#3: var y = 1; -4 >>> y === 2147483646. Actual: ' + (-4 >>> y));
+}
+
+//CHECK#4
+var x = -4;
+var y = 1;
+if (x >>> y !== 2147483646) {
+ $ERROR('#4: var x = -4; var y = 1; x >>> y === 2147483646. Actual: ' + (x >>> y));
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = -4;
+objecty.prop = 1;
+if (objectx.prop >>> objecty.prop !== 2147483646) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = -4; objecty.prop = 1; objectx.prop >>> objecty.prop === 2147483646. Actual: ' + (objectx.prop >>> objecty.prop));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T2.js
new file mode 100644
index 000000000..b1354c32d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A2.1_T2;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x >>> 1;
+ $ERROR('#1.1: x >>> 1 throw ReferenceError. Actual: ' + (x >>> 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x >>> 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T3.js
new file mode 100644
index 000000000..09f29ba3b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A2.1_T3;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 >>> y;
+ $ERROR('#1.1: 1 >>> y throw ReferenceError. Actual: ' + (1 >>> y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 >>> y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.2_T1.js
new file mode 100644
index 000000000..c88f41662
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A2.2_T1;
+ * @section: 11.7.3, 8.6.2.6;
+ * @assertion: Operator x >>> y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return -4}} >>> 1 !== 2147483646) {
+ $ERROR('#1: {valueOf: function() {return -4}} >>> 1 === 2147483646. Actual: ' + ({valueOf: function() {return -4}} >>> 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return -4}, toString: function() {return 0}} >>> 1 !== 2147483646) {
+ $ERROR('#2: {valueOf: function() {return -4}, toString: function() {return 0}} >>> 1 === 2147483646. Actual: ' + ({valueOf: function() {return -4}, toString: function() {return 0}} >>> 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return -4}, toString: function() {return {}}} >>> 1 !== 2147483646) {
+ $ERROR('#3: {valueOf: function() {return -4}, toString: function() {return {}}} >>> 1 === 2147483646. Actual: ' + ({valueOf: function() {return -4}, toString: function() {return {}}} >>> 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return -4}, toString: function() {throw "error"}} >>> 1 !== 2147483646) {
+ $ERROR('#4.1: {valueOf: function() {return -4}, toString: function() {throw "error"}} >>> 1 === 2147483646. Actual: ' + ({valueOf: function() {return -4}, toString: function() {throw "error"}} >>> 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return -4}, toString: function() {throw "error"}} >>> 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return -4}, toString: function() {throw "error"}} >>> 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (-4 >>> {toString: function() {return 1}} !== 2147483646) {
+ $ERROR('#5: -4 >>> {toString: function() {return 1}} === 2147483646. Actual: ' + (-4 >>> {toString: function() {return 1}}));
+}
+
+//CHECK#6
+if (-4 >>> {valueOf: function() {return {}}, toString: function() {return 1}} !== 2147483646) {
+ $ERROR('#6: -4 >>> {valueOf: function() {return {}}, toString: function() {return 1}} === 2147483646. Actual: ' + (-4 >>> {valueOf: function() {return {}}, toString: function() {return 1}}));
+}
+
+//CHECK#7
+try {
+ -4 >>> {valueOf: function() {throw "error"}, toString: function() {return 1}};
+ $ERROR('#7.1: -4 >>> {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (-4 >>> {valueOf: function() {throw "error"}, toString: function() {return 1}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: -4 >>> {valueOf: function() {throw "error"}, toString: function() {return 1}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ -4 >>> {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: -4 >>> {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: -4 >>> {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.3_T1.js
new file mode 100644
index 000000000..b60590eac
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A2.3_T1;
+ * @section: 11.7.3;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x >>> y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x >>> y throw "x". Actual: ' + (x >>> y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToNumber(first expression) is called first, and then ToNumber(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x >>> y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T1.js
new file mode 100644
index 000000000..4014efe38
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A2.4_T1;
+ * @section: 11.7.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) >>> x !== 0) {
+ $ERROR('#1: var x = 0; (x = 1) >>> x === 0. Actual: ' + ((x = 1) >>> x));
+}
+
+//CHECK#2
+var x = -4;
+if (x >>> (x = 1) !== 2147483646) {
+ $ERROR('#2: var x = -4; x >>> (x = 1) === 2147483646. Actual: ' + (x >>> (x = 1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T2.js
new file mode 100644
index 000000000..bd3f75524
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A2.4_T2;
+ * @section: 11.7.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() >>> y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() >>> y() throw "x". Actual: ' + (x() >>> y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() >>> y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T3.js
new file mode 100644
index 000000000..400103ea7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A2.4_T3;
+ * @section: 11.7.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x >>> (x = 1);
+ $ERROR('#1.1: x >>> (x = 1) throw ReferenceError. Actual: ' + (x >>> (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x >>> (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) >>> y !== 0) {
+ $ERROR('#2: (y = 1) >>> y === 0. Actual: ' + ((y = 1) >>> y));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.1.js
new file mode 100644
index 000000000..a785bf055
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T1.1;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true >>> true !== 0) {
+ $ERROR('#1: true >>> true === 0. Actual: ' + (true >>> true));
+}
+
+//CHECK#2
+if (new Boolean(true) >>> true !== 0) {
+ $ERROR('#2: new Boolean(true) >>> true === 0. Actual: ' + (new Boolean(true) >>> true));
+}
+
+//CHECK#3
+if (true >>> new Boolean(true) !== 0) {
+ $ERROR('#3: true >>> new Boolean(true) === 0. Actual: ' + (true >>> new Boolean(true)));
+}
+
+//CHECK#4
+if (new Boolean(true) >>> new Boolean(true) !== 0) {
+ $ERROR('#4: new Boolean(true) >>> new Boolean(true) === 0. Actual: ' + (new Boolean(true) >>> new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.2.js
new file mode 100644
index 000000000..77022415a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T1.2;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 >>> 1 !== 0) {
+ $ERROR('#1: 1 >>> 1 === 0. Actual: ' + (1 >>> 1));
+}
+
+//CHECK#2
+if (new Number(1) >>> 1 !== 0) {
+ $ERROR('#2: new Number(1) >>> 1 === 0. Actual: ' + (new Number(1) >>> 1));
+}
+
+//CHECK#3
+if (1 >>> new Number(1) !== 0) {
+ $ERROR('#3: 1 >>> new Number(1) === 0. Actual: ' + (1 >>> new Number(1)));
+}
+
+//CHECK#4
+if (new Number(1) >>> new Number(1) !== 0) {
+ $ERROR('#4: new Number(1) >>> new Number(1) === 0. Actual: ' + (new Number(1) >>> new Number(1)));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.3.js
new file mode 100644
index 000000000..feba982d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.3.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T1.3;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) and Type(y) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" >>> "1" !== 0) {
+ $ERROR('#1: "1" >>> "1" === 0. Actual: ' + ("1" >>> "1"));
+}
+
+//CHECK#2
+if (new String("1") >>> "1" !== 0) {
+ $ERROR('#2: new String("1") >>> "1" === 0. Actual: ' + (new String("1") >>> "1"));
+}
+
+//CHECK#3
+if ("1" >>> new String("1") !== 0) {
+ $ERROR('#3: "1" >>> new String("1") === 0. Actual: ' + ("1" >>> new String("1")));
+}
+
+//CHECK#4
+if (new String("1") >>> new String("1") !== 0) {
+ $ERROR('#4: new String("1") >>> new String("1") === 0. Actual: ' + (new String("1") >>> new String("1")));
+}
+
+//CHECK#5
+if ("x" >>> "1" !== 0) {
+ $ERROR('#5: "x" >>> "1" === 0. Actual: ' + ("x" >>> "1"));
+}
+
+//CHECK#6
+if ("1" >>> "x" !== 1) {
+ $ERROR('#6: "1" >>> "x" === 1. Actual: ' + ("1" >>> "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.4.js
new file mode 100644
index 000000000..8e3ceacfb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T1.4;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (null >>> undefined !== 0) {
+ $ERROR('#1: null >>> undefined === 0. Actual: ' + (null >>> undefined));
+}
+
+//CHECK#2
+if (undefined >>> null !== 0) {
+ $ERROR('#2: undefined >>> null === 0. Actual: ' + (undefined >>> null));
+}
+
+//CHECK#3
+if (undefined >>> undefined !== 0) {
+ $ERROR('#3: undefined >>> undefined === 0. Actual: ' + (undefined >>> undefined));
+}
+
+//CHECK#4
+if (null >>> null !== 0) {
+ $ERROR('#4: null >>> null === 0. Actual: ' + (null >>> null));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.5.js
new file mode 100644
index 000000000..8780eab28
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T1.5.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T1.5;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) and Type(y) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (({} >>> function(){return 1}) !== 0) {
+ $ERROR('#1: ({} >>> function(){return 1}) === 0. Actual: ' + (({} >>> function(){return 1})));
+}
+
+//CHECK#2
+if ((function(){return 1} >>> {}) !== 0) {
+ $ERROR('#2: (function(){return 1} >>> {}) === 0. Actual: ' + ((function(){return 1} >>> {})));
+}
+
+//CHECK#3
+if ((function(){return 1} >>> function(){return 1}) !== 0) {
+ $ERROR('#3: (function(){return 1} >>> function(){return 1}) === 0. Actual: ' + ((function(){return 1} >>> function(){return 1})));
+}
+
+//CHECK#4
+if (({} >>> {}) !== 0) {
+ $ERROR('#4: ({} >>> {}) === 0. Actual: ' + (({} >>> {})));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.1.js
new file mode 100644
index 000000000..5666891af
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T2.1;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if (true >>> 1 !== 0) {
+ $ERROR('#1: true >>> 1 === 0. Actual: ' + (true >>> 1));
+}
+
+//CHECK#2
+if (1 >>> true !== 0) {
+ $ERROR('#2: 1 >>> true === 0. Actual: ' + (1 >>> true));
+}
+
+//CHECK#3
+if (new Boolean(true) >>> 1 !== 0) {
+ $ERROR('#3: new Boolean(true) >>> 1 === 0. Actual: ' + (new Boolean(true) >>> 1));
+}
+
+//CHECK#4
+if (1 >>> new Boolean(true) !== 0) {
+ $ERROR('#4: 1 >>> new Boolean(true) === 0. Actual: ' + (1 >>> new Boolean(true)));
+}
+
+//CHECK#5
+if (true >>> new Number(1) !== 0) {
+ $ERROR('#5: true >>> new Number(1) === 0. Actual: ' + (true >>> new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) >>> true !== 0) {
+ $ERROR('#6: new Number(1) >>> true === 0. Actual: ' + (new Number(1) >>> true));
+}
+
+//CHECK#7
+if (new Boolean(true) >>> new Number(1) !== 0) {
+ $ERROR('#7: new Boolean(true) >>> new Number(1) === 0. Actual: ' + (new Boolean(true) >>> new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) >>> new Boolean(true) !== 0) {
+ $ERROR('#8: new Number(1) >>> new Boolean(true) === 0. Actual: ' + (new Number(1) >>> new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.2.js
new file mode 100644
index 000000000..f678ae1c5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T2.2;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" >>> 1 !== 0) {
+ $ERROR('#1: "1" >>> 1 === 0. Actual: ' + ("1" >>> 1));
+}
+
+//CHECK#2
+if (1 >>> "1" !== 0) {
+ $ERROR('#2: 1 >>> "1" === 0. Actual: ' + (1 >>> "1"));
+}
+
+//CHECK#3
+if (new String("1") >>> 1 !== 0) {
+ $ERROR('#3: new String("1") >>> 1 === 0. Actual: ' + (new String("1") >>> 1));
+}
+
+//CHECK#4
+if (1 >>> new String("1") !== 0) {
+ $ERROR('#4: 1 >>> new String("1") === 0. Actual: ' + (1 >>> new String("1")));
+}
+
+//CHECK#5
+if ("1" >>> new Number(1) !== 0) {
+ $ERROR('#5: "1" >>> new Number(1) === 0. Actual: ' + ("1" >>> new Number(1)));
+}
+
+//CHECK#6
+if (new Number(1) >>> "1" !== 0) {
+ $ERROR('#6: new Number(1) >>> "1" === 0. Actual: ' + (new Number(1) >>> "1"));
+}
+
+//CHECK#7
+if (new String("1") >>> new Number(1) !== 0) {
+ $ERROR('#7: new String("1") >>> new Number(1) === 0. Actual: ' + (new String("1") >>> new Number(1)));
+}
+
+//CHECK#8
+if (new Number(1) >>> new String("1") !== 0) {
+ $ERROR('#8: new Number(1) >>> new String("1") === 0. Actual: ' + (new Number(1) >>> new String("1")));
+}
+
+//CHECK#9
+if ("x" >>> 1 !== 0) {
+ $ERROR('#9: "x" >>> 1 === 0. Actual: ' + ("x" >>> 1));
+}
+
+//CHECK#10
+if (1 >>> "x" !== 1) {
+ $ERROR('#10: 1 >>> "x" === 1. Actual: ' + (1 >>> "x"));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.3.js
new file mode 100644
index 000000000..3feb75745
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T2.3;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 >>> null !== 1) {
+ $ERROR('#1: 1 >>> null === 1. Actual: ' + (1 >>> null));
+}
+
+//CHECK#2
+if (null >>> 1 !== 0) {
+ $ERROR('#2: null >>> 1 === 0. Actual: ' + (null >>> 1));
+}
+
+//CHECK#3
+if (new Number(1) >>> null !== 1) {
+ $ERROR('#3: new Number(1) >>> null === 1. Actual: ' + (new Number(1) >>> null));
+}
+
+//CHECK#4
+if (null >>> new Number(1) !== 0) {
+ $ERROR('#4: null >>> new Number(1) === 0. Actual: ' + (null >>> new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.4.js
new file mode 100644
index 000000000..3dfb4d20e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T2.4;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (1 >>> undefined !== 1) {
+ $ERROR('#1: 1 >>> undefined === 1. Actual: ' + (1 >>> undefined));
+}
+
+//CHECK#2
+if (undefined >>> 1 !== 0) {
+ $ERROR('#2: undefined >>> 1 === 0. Actual: ' + (undefined >>> 1));
+}
+
+//CHECK#3
+if (new Number(1) >>> undefined !== 1) {
+ $ERROR('#3: new Number(1) >>> undefined === 1. Actual: ' + (new Number(1) >>> undefined));
+}
+
+//CHECK#4
+if (undefined >>> new Number(1) !== 0) {
+ $ERROR('#4: undefined >>> new Number(1) === 0. Actual: ' + (undefined >>> new Number(1)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.5.js
new file mode 100644
index 000000000..662d7711d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T2.5;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true >>> "1" !== 0) {
+ $ERROR('#1: true >>> "1" === 0. Actual: ' + (true >>> "1"));
+}
+
+//CHECK#2
+if ("1" >>> true !== 0) {
+ $ERROR('#2: "1" >>> true === 0. Actual: ' + ("1" >>> true));
+}
+
+//CHECK#3
+if (new Boolean(true) >>> "1" !== 0) {
+ $ERROR('#3: new Boolean(true) >>> "1" === 0. Actual: ' + (new Boolean(true) >>> "1"));
+}
+
+//CHECK#4
+if ("1" >>> new Boolean(true) !== 0) {
+ $ERROR('#4: "1" >>> new Boolean(true) === 0. Actual: ' + ("1" >>> new Boolean(true)));
+}
+
+//CHECK#5
+if (true >>> new String("1") !== 0) {
+ $ERROR('#5: true >>> new String("1") === 0. Actual: ' + (true >>> new String("1")));
+}
+
+//CHECK#6
+if (new String("1") >>> true !== 0) {
+ $ERROR('#6: new String("1") >>> true === 0. Actual: ' + (new String("1") >>> true));
+}
+
+//CHECK#7
+if (new Boolean(true) >>> new String("1") !== 0) {
+ $ERROR('#7: new Boolean(true) >>> new String("1") === 0. Actual: ' + (new Boolean(true) >>> new String("1")));
+}
+
+//CHECK#8
+if (new String("1") >>> new Boolean(true) !== 0) {
+ $ERROR('#8: new String("1") >>> new Boolean(true) === 0. Actual: ' + (new String("1") >>> new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.6.js
new file mode 100644
index 000000000..8b57bb11a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T2.6;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ("1" >>> undefined !== 1) {
+ $ERROR('#1: "1" >>> undefined === 1. Actual: ' + ("1" >>> undefined));
+}
+
+//CHECK#2
+if (undefined >>> "1" !== 0) {
+ $ERROR('#2: undefined >>> "1" === 0. Actual: ' + (undefined >>> "1"));
+}
+
+//CHECK#3
+if (new String("1") >>> undefined !== 1) {
+ $ERROR('#3: new String("1") >>> undefined === 1. Actual: ' + (new String("1") >>> undefined));
+}
+
+//CHECK#4
+if (undefined >>> new String("1") !== 0) {
+ $ERROR('#4: undefined >>> new String("1") === 0. Actual: ' + (undefined >>> new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.7.js
new file mode 100644
index 000000000..e63910e1d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T2.7;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" >>> null !== 1) {
+ $ERROR('#1: "1" >>> null === 1. Actual: ' + ("1" >>> null));
+}
+
+//CHECK#2
+if (null >>> "1" !== 0) {
+ $ERROR('#2: null >>> "1" === 0. Actual: ' + (null >>> "1"));
+}
+
+//CHECK#3
+if (new String("1") >>> null !== 1) {
+ $ERROR('#3: new String("1") >>> null === 1. Actual: ' + (new String("1") >>> null));
+}
+
+//CHECK#4
+if (null >>> new String("1") !== 0) {
+ $ERROR('#4: null >>> new String("1") === 0. Actual: ' + (null >>> new String("1")));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.8.js
new file mode 100644
index 000000000..8671cc64c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T2.8;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (true >>> undefined !== 1) {
+ $ERROR('#1: true >>> undefined === 1. Actual: ' + (true >>> undefined));
+}
+
+//CHECK#2
+if (undefined >>> true !== 0) {
+ $ERROR('#2: undefined >>> true === 0. Actual: ' + (undefined >>> true));
+}
+
+//CHECK#3
+if (new Boolean(true) >>> undefined !== 1) {
+ $ERROR('#3: new Boolean(true) >>> undefined === 1. Actual: ' + (new Boolean(true) >>> undefined));
+}
+
+//CHECK#4
+if (undefined >>> new Boolean(true) !== 0) {
+ $ERROR('#4: undefined >>> new Boolean(true) === 0. Actual: ' + (undefined >>> new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.9.js
new file mode 100644
index 000000000..c1e7d433d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A3_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A3_T2.9;
+ * @section: 11.7.3;
+ * @assertion: Operator x >>> y returns ToNumber(x) >>> ToNumber(y);
+ * @description: Type(x) is different from Type(y) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true >>> null !== 1) {
+ $ERROR('#1: true >>> null === 1. Actual: ' + (true >>> null));
+}
+
+//CHECK#2
+if (null >>> true !== 0) {
+ $ERROR('#2: null >>> true === 0. Actual: ' + (null >>> true));
+}
+
+//CHECK#3
+if (new Boolean(true) >>> null !== 1) {
+ $ERROR('#3: new Boolean(true) >>> null === 1. Actual: ' + (new Boolean(true) >>> null));
+}
+
+//CHECK#4
+if (null >>> new Boolean(true) !== 0) {
+ $ERROR('#4: null >>> new Boolean(true) === 0. Actual: ' + (null >>> new Boolean(true)));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T1.js
new file mode 100644
index 000000000..3cfadb9a5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T1.js
@@ -0,0 +1,2570 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A4_T1;
+ * @section: 11.7.3;
+ * @assertion: Check operator x >>> y in distinct points;
+ * @description: ShiftExpression = 2^n, n = 0...15;
+ */
+
+//CHECK
+
+if (1 >>> 0 !== 1) {
+ $ERROR('#1: 1 >>> 0 === 1. Actual: ' + (1 >>> 0));
+}
+
+
+if (2 >>> 0 !== 2) {
+ $ERROR('#2: 2 >>> 0 === 2. Actual: ' + (2 >>> 0));
+}
+
+
+if (4 >>> 0 !== 4) {
+ $ERROR('#3: 4 >>> 0 === 4. Actual: ' + (4 >>> 0));
+}
+
+
+if (8 >>> 0 !== 8) {
+ $ERROR('#4: 8 >>> 0 === 8. Actual: ' + (8 >>> 0));
+}
+
+
+if (16 >>> 0 !== 16) {
+ $ERROR('#5: 16 >>> 0 === 16. Actual: ' + (16 >>> 0));
+}
+
+
+if (32 >>> 0 !== 32) {
+ $ERROR('#6: 32 >>> 0 === 32. Actual: ' + (32 >>> 0));
+}
+
+
+if (64 >>> 0 !== 64) {
+ $ERROR('#7: 64 >>> 0 === 64. Actual: ' + (64 >>> 0));
+}
+
+
+if (128 >>> 0 !== 128) {
+ $ERROR('#8: 128 >>> 0 === 128. Actual: ' + (128 >>> 0));
+}
+
+
+if (256 >>> 0 !== 256) {
+ $ERROR('#9: 256 >>> 0 === 256. Actual: ' + (256 >>> 0));
+}
+
+
+if (512 >>> 0 !== 512) {
+ $ERROR('#10: 512 >>> 0 === 512. Actual: ' + (512 >>> 0));
+}
+
+
+if (1024 >>> 0 !== 1024) {
+ $ERROR('#11: 1024 >>> 0 === 1024. Actual: ' + (1024 >>> 0));
+}
+
+
+if (2048 >>> 0 !== 2048) {
+ $ERROR('#12: 2048 >>> 0 === 2048. Actual: ' + (2048 >>> 0));
+}
+
+
+if (4096 >>> 0 !== 4096) {
+ $ERROR('#13: 4096 >>> 0 === 4096. Actual: ' + (4096 >>> 0));
+}
+
+
+if (8192 >>> 0 !== 8192) {
+ $ERROR('#14: 8192 >>> 0 === 8192. Actual: ' + (8192 >>> 0));
+}
+
+
+if (16384 >>> 0 !== 16384) {
+ $ERROR('#15: 16384 >>> 0 === 16384. Actual: ' + (16384 >>> 0));
+}
+
+
+if (32768 >>> 0 !== 32768) {
+ $ERROR('#16: 32768 >>> 0 === 32768. Actual: ' + (32768 >>> 0));
+}
+
+
+if (65536 >>> 0 !== 65536) {
+ $ERROR('#17: 65536 >>> 0 === 65536. Actual: ' + (65536 >>> 0));
+}
+
+
+if (131072 >>> 0 !== 131072) {
+ $ERROR('#18: 131072 >>> 0 === 131072. Actual: ' + (131072 >>> 0));
+}
+
+
+if (262144 >>> 0 !== 262144) {
+ $ERROR('#19: 262144 >>> 0 === 262144. Actual: ' + (262144 >>> 0));
+}
+
+
+if (524288 >>> 0 !== 524288) {
+ $ERROR('#20: 524288 >>> 0 === 524288. Actual: ' + (524288 >>> 0));
+}
+
+
+if (1048576 >>> 0 !== 1048576) {
+ $ERROR('#21: 1048576 >>> 0 === 1048576. Actual: ' + (1048576 >>> 0));
+}
+
+
+if (2097152 >>> 0 !== 2097152) {
+ $ERROR('#22: 2097152 >>> 0 === 2097152. Actual: ' + (2097152 >>> 0));
+}
+
+
+if (4194304 >>> 0 !== 4194304) {
+ $ERROR('#23: 4194304 >>> 0 === 4194304. Actual: ' + (4194304 >>> 0));
+}
+
+
+if (8388608 >>> 0 !== 8388608) {
+ $ERROR('#24: 8388608 >>> 0 === 8388608. Actual: ' + (8388608 >>> 0));
+}
+
+
+if (16777216 >>> 0 !== 16777216) {
+ $ERROR('#25: 16777216 >>> 0 === 16777216. Actual: ' + (16777216 >>> 0));
+}
+
+
+if (33554432 >>> 0 !== 33554432) {
+ $ERROR('#26: 33554432 >>> 0 === 33554432. Actual: ' + (33554432 >>> 0));
+}
+
+
+if (67108864 >>> 0 !== 67108864) {
+ $ERROR('#27: 67108864 >>> 0 === 67108864. Actual: ' + (67108864 >>> 0));
+}
+
+
+if (134217728 >>> 0 !== 134217728) {
+ $ERROR('#28: 134217728 >>> 0 === 134217728. Actual: ' + (134217728 >>> 0));
+}
+
+
+if (268435456 >>> 0 !== 268435456) {
+ $ERROR('#29: 268435456 >>> 0 === 268435456. Actual: ' + (268435456 >>> 0));
+}
+
+
+if (536870912 >>> 0 !== 536870912) {
+ $ERROR('#30: 536870912 >>> 0 === 536870912. Actual: ' + (536870912 >>> 0));
+}
+
+
+if (1073741824 >>> 0 !== 1073741824) {
+ $ERROR('#31: 1073741824 >>> 0 === 1073741824. Actual: ' + (1073741824 >>> 0));
+}
+
+
+if (2147483648 >>> 0 !== 2147483648) {
+ $ERROR('#32: 2147483648 >>> 0 === 2147483648. Actual: ' + (2147483648 >>> 0));
+}
+
+
+if (1 >>> 1 !== 0) {
+ $ERROR('#33: 1 >>> 1 === 0. Actual: ' + (1 >>> 1));
+}
+
+
+if (2 >>> 1 !== 1) {
+ $ERROR('#34: 2 >>> 1 === 1. Actual: ' + (2 >>> 1));
+}
+
+
+if (4 >>> 1 !== 2) {
+ $ERROR('#35: 4 >>> 1 === 2. Actual: ' + (4 >>> 1));
+}
+
+
+if (8 >>> 1 !== 4) {
+ $ERROR('#36: 8 >>> 1 === 4. Actual: ' + (8 >>> 1));
+}
+
+
+if (16 >>> 1 !== 8) {
+ $ERROR('#37: 16 >>> 1 === 8. Actual: ' + (16 >>> 1));
+}
+
+
+if (32 >>> 1 !== 16) {
+ $ERROR('#38: 32 >>> 1 === 16. Actual: ' + (32 >>> 1));
+}
+
+
+if (64 >>> 1 !== 32) {
+ $ERROR('#39: 64 >>> 1 === 32. Actual: ' + (64 >>> 1));
+}
+
+
+if (128 >>> 1 !== 64) {
+ $ERROR('#40: 128 >>> 1 === 64. Actual: ' + (128 >>> 1));
+}
+
+
+if (256 >>> 1 !== 128) {
+ $ERROR('#41: 256 >>> 1 === 128. Actual: ' + (256 >>> 1));
+}
+
+
+if (512 >>> 1 !== 256) {
+ $ERROR('#42: 512 >>> 1 === 256. Actual: ' + (512 >>> 1));
+}
+
+
+if (1024 >>> 1 !== 512) {
+ $ERROR('#43: 1024 >>> 1 === 512. Actual: ' + (1024 >>> 1));
+}
+
+
+if (2048 >>> 1 !== 1024) {
+ $ERROR('#44: 2048 >>> 1 === 1024. Actual: ' + (2048 >>> 1));
+}
+
+
+if (4096 >>> 1 !== 2048) {
+ $ERROR('#45: 4096 >>> 1 === 2048. Actual: ' + (4096 >>> 1));
+}
+
+
+if (8192 >>> 1 !== 4096) {
+ $ERROR('#46: 8192 >>> 1 === 4096. Actual: ' + (8192 >>> 1));
+}
+
+
+if (16384 >>> 1 !== 8192) {
+ $ERROR('#47: 16384 >>> 1 === 8192. Actual: ' + (16384 >>> 1));
+}
+
+
+if (32768 >>> 1 !== 16384) {
+ $ERROR('#48: 32768 >>> 1 === 16384. Actual: ' + (32768 >>> 1));
+}
+
+
+if (65536 >>> 1 !== 32768) {
+ $ERROR('#49: 65536 >>> 1 === 32768. Actual: ' + (65536 >>> 1));
+}
+
+
+if (131072 >>> 1 !== 65536) {
+ $ERROR('#50: 131072 >>> 1 === 65536. Actual: ' + (131072 >>> 1));
+}
+
+
+if (262144 >>> 1 !== 131072) {
+ $ERROR('#51: 262144 >>> 1 === 131072. Actual: ' + (262144 >>> 1));
+}
+
+
+if (524288 >>> 1 !== 262144) {
+ $ERROR('#52: 524288 >>> 1 === 262144. Actual: ' + (524288 >>> 1));
+}
+
+
+if (1048576 >>> 1 !== 524288) {
+ $ERROR('#53: 1048576 >>> 1 === 524288. Actual: ' + (1048576 >>> 1));
+}
+
+
+if (2097152 >>> 1 !== 1048576) {
+ $ERROR('#54: 2097152 >>> 1 === 1048576. Actual: ' + (2097152 >>> 1));
+}
+
+
+if (4194304 >>> 1 !== 2097152) {
+ $ERROR('#55: 4194304 >>> 1 === 2097152. Actual: ' + (4194304 >>> 1));
+}
+
+
+if (8388608 >>> 1 !== 4194304) {
+ $ERROR('#56: 8388608 >>> 1 === 4194304. Actual: ' + (8388608 >>> 1));
+}
+
+
+if (16777216 >>> 1 !== 8388608) {
+ $ERROR('#57: 16777216 >>> 1 === 8388608. Actual: ' + (16777216 >>> 1));
+}
+
+
+if (33554432 >>> 1 !== 16777216) {
+ $ERROR('#58: 33554432 >>> 1 === 16777216. Actual: ' + (33554432 >>> 1));
+}
+
+
+if (67108864 >>> 1 !== 33554432) {
+ $ERROR('#59: 67108864 >>> 1 === 33554432. Actual: ' + (67108864 >>> 1));
+}
+
+
+if (134217728 >>> 1 !== 67108864) {
+ $ERROR('#60: 134217728 >>> 1 === 67108864. Actual: ' + (134217728 >>> 1));
+}
+
+
+if (268435456 >>> 1 !== 134217728) {
+ $ERROR('#61: 268435456 >>> 1 === 134217728. Actual: ' + (268435456 >>> 1));
+}
+
+
+if (536870912 >>> 1 !== 268435456) {
+ $ERROR('#62: 536870912 >>> 1 === 268435456. Actual: ' + (536870912 >>> 1));
+}
+
+
+if (1073741824 >>> 1 !== 536870912) {
+ $ERROR('#63: 1073741824 >>> 1 === 536870912. Actual: ' + (1073741824 >>> 1));
+}
+
+
+if (2147483648 >>> 1 !== 1073741824) {
+ $ERROR('#64: 2147483648 >>> 1 === 1073741824. Actual: ' + (2147483648 >>> 1));
+}
+
+
+if (1 >>> 2 !== 0) {
+ $ERROR('#65: 1 >>> 2 === 0. Actual: ' + (1 >>> 2));
+}
+
+
+if (2 >>> 2 !== 0) {
+ $ERROR('#66: 2 >>> 2 === 0. Actual: ' + (2 >>> 2));
+}
+
+
+if (4 >>> 2 !== 1) {
+ $ERROR('#67: 4 >>> 2 === 1. Actual: ' + (4 >>> 2));
+}
+
+
+if (8 >>> 2 !== 2) {
+ $ERROR('#68: 8 >>> 2 === 2. Actual: ' + (8 >>> 2));
+}
+
+
+if (16 >>> 2 !== 4) {
+ $ERROR('#69: 16 >>> 2 === 4. Actual: ' + (16 >>> 2));
+}
+
+
+if (32 >>> 2 !== 8) {
+ $ERROR('#70: 32 >>> 2 === 8. Actual: ' + (32 >>> 2));
+}
+
+
+if (64 >>> 2 !== 16) {
+ $ERROR('#71: 64 >>> 2 === 16. Actual: ' + (64 >>> 2));
+}
+
+
+if (128 >>> 2 !== 32) {
+ $ERROR('#72: 128 >>> 2 === 32. Actual: ' + (128 >>> 2));
+}
+
+
+if (256 >>> 2 !== 64) {
+ $ERROR('#73: 256 >>> 2 === 64. Actual: ' + (256 >>> 2));
+}
+
+
+if (512 >>> 2 !== 128) {
+ $ERROR('#74: 512 >>> 2 === 128. Actual: ' + (512 >>> 2));
+}
+
+
+if (1024 >>> 2 !== 256) {
+ $ERROR('#75: 1024 >>> 2 === 256. Actual: ' + (1024 >>> 2));
+}
+
+
+if (2048 >>> 2 !== 512) {
+ $ERROR('#76: 2048 >>> 2 === 512. Actual: ' + (2048 >>> 2));
+}
+
+
+if (4096 >>> 2 !== 1024) {
+ $ERROR('#77: 4096 >>> 2 === 1024. Actual: ' + (4096 >>> 2));
+}
+
+
+if (8192 >>> 2 !== 2048) {
+ $ERROR('#78: 8192 >>> 2 === 2048. Actual: ' + (8192 >>> 2));
+}
+
+
+if (16384 >>> 2 !== 4096) {
+ $ERROR('#79: 16384 >>> 2 === 4096. Actual: ' + (16384 >>> 2));
+}
+
+
+if (32768 >>> 2 !== 8192) {
+ $ERROR('#80: 32768 >>> 2 === 8192. Actual: ' + (32768 >>> 2));
+}
+
+
+if (65536 >>> 2 !== 16384) {
+ $ERROR('#81: 65536 >>> 2 === 16384. Actual: ' + (65536 >>> 2));
+}
+
+
+if (131072 >>> 2 !== 32768) {
+ $ERROR('#82: 131072 >>> 2 === 32768. Actual: ' + (131072 >>> 2));
+}
+
+
+if (262144 >>> 2 !== 65536) {
+ $ERROR('#83: 262144 >>> 2 === 65536. Actual: ' + (262144 >>> 2));
+}
+
+
+if (524288 >>> 2 !== 131072) {
+ $ERROR('#84: 524288 >>> 2 === 131072. Actual: ' + (524288 >>> 2));
+}
+
+
+if (1048576 >>> 2 !== 262144) {
+ $ERROR('#85: 1048576 >>> 2 === 262144. Actual: ' + (1048576 >>> 2));
+}
+
+
+if (2097152 >>> 2 !== 524288) {
+ $ERROR('#86: 2097152 >>> 2 === 524288. Actual: ' + (2097152 >>> 2));
+}
+
+
+if (4194304 >>> 2 !== 1048576) {
+ $ERROR('#87: 4194304 >>> 2 === 1048576. Actual: ' + (4194304 >>> 2));
+}
+
+
+if (8388608 >>> 2 !== 2097152) {
+ $ERROR('#88: 8388608 >>> 2 === 2097152. Actual: ' + (8388608 >>> 2));
+}
+
+
+if (16777216 >>> 2 !== 4194304) {
+ $ERROR('#89: 16777216 >>> 2 === 4194304. Actual: ' + (16777216 >>> 2));
+}
+
+
+if (33554432 >>> 2 !== 8388608) {
+ $ERROR('#90: 33554432 >>> 2 === 8388608. Actual: ' + (33554432 >>> 2));
+}
+
+
+if (67108864 >>> 2 !== 16777216) {
+ $ERROR('#91: 67108864 >>> 2 === 16777216. Actual: ' + (67108864 >>> 2));
+}
+
+
+if (134217728 >>> 2 !== 33554432) {
+ $ERROR('#92: 134217728 >>> 2 === 33554432. Actual: ' + (134217728 >>> 2));
+}
+
+
+if (268435456 >>> 2 !== 67108864) {
+ $ERROR('#93: 268435456 >>> 2 === 67108864. Actual: ' + (268435456 >>> 2));
+}
+
+
+if (536870912 >>> 2 !== 134217728) {
+ $ERROR('#94: 536870912 >>> 2 === 134217728. Actual: ' + (536870912 >>> 2));
+}
+
+
+if (1073741824 >>> 2 !== 268435456) {
+ $ERROR('#95: 1073741824 >>> 2 === 268435456. Actual: ' + (1073741824 >>> 2));
+}
+
+
+if (2147483648 >>> 2 !== 536870912) {
+ $ERROR('#96: 2147483648 >>> 2 === 536870912. Actual: ' + (2147483648 >>> 2));
+}
+
+
+if (1 >>> 3 !== 0) {
+ $ERROR('#97: 1 >>> 3 === 0. Actual: ' + (1 >>> 3));
+}
+
+
+if (2 >>> 3 !== 0) {
+ $ERROR('#98: 2 >>> 3 === 0. Actual: ' + (2 >>> 3));
+}
+
+
+if (4 >>> 3 !== 0) {
+ $ERROR('#99: 4 >>> 3 === 0. Actual: ' + (4 >>> 3));
+}
+
+
+if (8 >>> 3 !== 1) {
+ $ERROR('#100: 8 >>> 3 === 1. Actual: ' + (8 >>> 3));
+}
+
+
+if (16 >>> 3 !== 2) {
+ $ERROR('#101: 16 >>> 3 === 2. Actual: ' + (16 >>> 3));
+}
+
+
+if (32 >>> 3 !== 4) {
+ $ERROR('#102: 32 >>> 3 === 4. Actual: ' + (32 >>> 3));
+}
+
+
+if (64 >>> 3 !== 8) {
+ $ERROR('#103: 64 >>> 3 === 8. Actual: ' + (64 >>> 3));
+}
+
+
+if (128 >>> 3 !== 16) {
+ $ERROR('#104: 128 >>> 3 === 16. Actual: ' + (128 >>> 3));
+}
+
+
+if (256 >>> 3 !== 32) {
+ $ERROR('#105: 256 >>> 3 === 32. Actual: ' + (256 >>> 3));
+}
+
+
+if (512 >>> 3 !== 64) {
+ $ERROR('#106: 512 >>> 3 === 64. Actual: ' + (512 >>> 3));
+}
+
+
+if (1024 >>> 3 !== 128) {
+ $ERROR('#107: 1024 >>> 3 === 128. Actual: ' + (1024 >>> 3));
+}
+
+
+if (2048 >>> 3 !== 256) {
+ $ERROR('#108: 2048 >>> 3 === 256. Actual: ' + (2048 >>> 3));
+}
+
+
+if (4096 >>> 3 !== 512) {
+ $ERROR('#109: 4096 >>> 3 === 512. Actual: ' + (4096 >>> 3));
+}
+
+
+if (8192 >>> 3 !== 1024) {
+ $ERROR('#110: 8192 >>> 3 === 1024. Actual: ' + (8192 >>> 3));
+}
+
+
+if (16384 >>> 3 !== 2048) {
+ $ERROR('#111: 16384 >>> 3 === 2048. Actual: ' + (16384 >>> 3));
+}
+
+
+if (32768 >>> 3 !== 4096) {
+ $ERROR('#112: 32768 >>> 3 === 4096. Actual: ' + (32768 >>> 3));
+}
+
+
+if (65536 >>> 3 !== 8192) {
+ $ERROR('#113: 65536 >>> 3 === 8192. Actual: ' + (65536 >>> 3));
+}
+
+
+if (131072 >>> 3 !== 16384) {
+ $ERROR('#114: 131072 >>> 3 === 16384. Actual: ' + (131072 >>> 3));
+}
+
+
+if (262144 >>> 3 !== 32768) {
+ $ERROR('#115: 262144 >>> 3 === 32768. Actual: ' + (262144 >>> 3));
+}
+
+
+if (524288 >>> 3 !== 65536) {
+ $ERROR('#116: 524288 >>> 3 === 65536. Actual: ' + (524288 >>> 3));
+}
+
+
+if (1048576 >>> 3 !== 131072) {
+ $ERROR('#117: 1048576 >>> 3 === 131072. Actual: ' + (1048576 >>> 3));
+}
+
+
+if (2097152 >>> 3 !== 262144) {
+ $ERROR('#118: 2097152 >>> 3 === 262144. Actual: ' + (2097152 >>> 3));
+}
+
+
+if (4194304 >>> 3 !== 524288) {
+ $ERROR('#119: 4194304 >>> 3 === 524288. Actual: ' + (4194304 >>> 3));
+}
+
+
+if (8388608 >>> 3 !== 1048576) {
+ $ERROR('#120: 8388608 >>> 3 === 1048576. Actual: ' + (8388608 >>> 3));
+}
+
+
+if (16777216 >>> 3 !== 2097152) {
+ $ERROR('#121: 16777216 >>> 3 === 2097152. Actual: ' + (16777216 >>> 3));
+}
+
+
+if (33554432 >>> 3 !== 4194304) {
+ $ERROR('#122: 33554432 >>> 3 === 4194304. Actual: ' + (33554432 >>> 3));
+}
+
+
+if (67108864 >>> 3 !== 8388608) {
+ $ERROR('#123: 67108864 >>> 3 === 8388608. Actual: ' + (67108864 >>> 3));
+}
+
+
+if (134217728 >>> 3 !== 16777216) {
+ $ERROR('#124: 134217728 >>> 3 === 16777216. Actual: ' + (134217728 >>> 3));
+}
+
+
+if (268435456 >>> 3 !== 33554432) {
+ $ERROR('#125: 268435456 >>> 3 === 33554432. Actual: ' + (268435456 >>> 3));
+}
+
+
+if (536870912 >>> 3 !== 67108864) {
+ $ERROR('#126: 536870912 >>> 3 === 67108864. Actual: ' + (536870912 >>> 3));
+}
+
+
+if (1073741824 >>> 3 !== 134217728) {
+ $ERROR('#127: 1073741824 >>> 3 === 134217728. Actual: ' + (1073741824 >>> 3));
+}
+
+
+if (2147483648 >>> 3 !== 268435456) {
+ $ERROR('#128: 2147483648 >>> 3 === 268435456. Actual: ' + (2147483648 >>> 3));
+}
+
+
+if (1 >>> 4 !== 0) {
+ $ERROR('#129: 1 >>> 4 === 0. Actual: ' + (1 >>> 4));
+}
+
+
+if (2 >>> 4 !== 0) {
+ $ERROR('#130: 2 >>> 4 === 0. Actual: ' + (2 >>> 4));
+}
+
+
+if (4 >>> 4 !== 0) {
+ $ERROR('#131: 4 >>> 4 === 0. Actual: ' + (4 >>> 4));
+}
+
+
+if (8 >>> 4 !== 0) {
+ $ERROR('#132: 8 >>> 4 === 0. Actual: ' + (8 >>> 4));
+}
+
+
+if (16 >>> 4 !== 1) {
+ $ERROR('#133: 16 >>> 4 === 1. Actual: ' + (16 >>> 4));
+}
+
+
+if (32 >>> 4 !== 2) {
+ $ERROR('#134: 32 >>> 4 === 2. Actual: ' + (32 >>> 4));
+}
+
+
+if (64 >>> 4 !== 4) {
+ $ERROR('#135: 64 >>> 4 === 4. Actual: ' + (64 >>> 4));
+}
+
+
+if (128 >>> 4 !== 8) {
+ $ERROR('#136: 128 >>> 4 === 8. Actual: ' + (128 >>> 4));
+}
+
+
+if (256 >>> 4 !== 16) {
+ $ERROR('#137: 256 >>> 4 === 16. Actual: ' + (256 >>> 4));
+}
+
+
+if (512 >>> 4 !== 32) {
+ $ERROR('#138: 512 >>> 4 === 32. Actual: ' + (512 >>> 4));
+}
+
+
+if (1024 >>> 4 !== 64) {
+ $ERROR('#139: 1024 >>> 4 === 64. Actual: ' + (1024 >>> 4));
+}
+
+
+if (2048 >>> 4 !== 128) {
+ $ERROR('#140: 2048 >>> 4 === 128. Actual: ' + (2048 >>> 4));
+}
+
+
+if (4096 >>> 4 !== 256) {
+ $ERROR('#141: 4096 >>> 4 === 256. Actual: ' + (4096 >>> 4));
+}
+
+
+if (8192 >>> 4 !== 512) {
+ $ERROR('#142: 8192 >>> 4 === 512. Actual: ' + (8192 >>> 4));
+}
+
+
+if (16384 >>> 4 !== 1024) {
+ $ERROR('#143: 16384 >>> 4 === 1024. Actual: ' + (16384 >>> 4));
+}
+
+
+if (32768 >>> 4 !== 2048) {
+ $ERROR('#144: 32768 >>> 4 === 2048. Actual: ' + (32768 >>> 4));
+}
+
+
+if (65536 >>> 4 !== 4096) {
+ $ERROR('#145: 65536 >>> 4 === 4096. Actual: ' + (65536 >>> 4));
+}
+
+
+if (131072 >>> 4 !== 8192) {
+ $ERROR('#146: 131072 >>> 4 === 8192. Actual: ' + (131072 >>> 4));
+}
+
+
+if (262144 >>> 4 !== 16384) {
+ $ERROR('#147: 262144 >>> 4 === 16384. Actual: ' + (262144 >>> 4));
+}
+
+
+if (524288 >>> 4 !== 32768) {
+ $ERROR('#148: 524288 >>> 4 === 32768. Actual: ' + (524288 >>> 4));
+}
+
+
+if (1048576 >>> 4 !== 65536) {
+ $ERROR('#149: 1048576 >>> 4 === 65536. Actual: ' + (1048576 >>> 4));
+}
+
+
+if (2097152 >>> 4 !== 131072) {
+ $ERROR('#150: 2097152 >>> 4 === 131072. Actual: ' + (2097152 >>> 4));
+}
+
+
+if (4194304 >>> 4 !== 262144) {
+ $ERROR('#151: 4194304 >>> 4 === 262144. Actual: ' + (4194304 >>> 4));
+}
+
+
+if (8388608 >>> 4 !== 524288) {
+ $ERROR('#152: 8388608 >>> 4 === 524288. Actual: ' + (8388608 >>> 4));
+}
+
+
+if (16777216 >>> 4 !== 1048576) {
+ $ERROR('#153: 16777216 >>> 4 === 1048576. Actual: ' + (16777216 >>> 4));
+}
+
+
+if (33554432 >>> 4 !== 2097152) {
+ $ERROR('#154: 33554432 >>> 4 === 2097152. Actual: ' + (33554432 >>> 4));
+}
+
+
+if (67108864 >>> 4 !== 4194304) {
+ $ERROR('#155: 67108864 >>> 4 === 4194304. Actual: ' + (67108864 >>> 4));
+}
+
+
+if (134217728 >>> 4 !== 8388608) {
+ $ERROR('#156: 134217728 >>> 4 === 8388608. Actual: ' + (134217728 >>> 4));
+}
+
+
+if (268435456 >>> 4 !== 16777216) {
+ $ERROR('#157: 268435456 >>> 4 === 16777216. Actual: ' + (268435456 >>> 4));
+}
+
+
+if (536870912 >>> 4 !== 33554432) {
+ $ERROR('#158: 536870912 >>> 4 === 33554432. Actual: ' + (536870912 >>> 4));
+}
+
+
+if (1073741824 >>> 4 !== 67108864) {
+ $ERROR('#159: 1073741824 >>> 4 === 67108864. Actual: ' + (1073741824 >>> 4));
+}
+
+
+if (2147483648 >>> 4 !== 134217728) {
+ $ERROR('#160: 2147483648 >>> 4 === 134217728. Actual: ' + (2147483648 >>> 4));
+}
+
+
+if (1 >>> 5 !== 0) {
+ $ERROR('#161: 1 >>> 5 === 0. Actual: ' + (1 >>> 5));
+}
+
+
+if (2 >>> 5 !== 0) {
+ $ERROR('#162: 2 >>> 5 === 0. Actual: ' + (2 >>> 5));
+}
+
+
+if (4 >>> 5 !== 0) {
+ $ERROR('#163: 4 >>> 5 === 0. Actual: ' + (4 >>> 5));
+}
+
+
+if (8 >>> 5 !== 0) {
+ $ERROR('#164: 8 >>> 5 === 0. Actual: ' + (8 >>> 5));
+}
+
+
+if (16 >>> 5 !== 0) {
+ $ERROR('#165: 16 >>> 5 === 0. Actual: ' + (16 >>> 5));
+}
+
+
+if (32 >>> 5 !== 1) {
+ $ERROR('#166: 32 >>> 5 === 1. Actual: ' + (32 >>> 5));
+}
+
+
+if (64 >>> 5 !== 2) {
+ $ERROR('#167: 64 >>> 5 === 2. Actual: ' + (64 >>> 5));
+}
+
+
+if (128 >>> 5 !== 4) {
+ $ERROR('#168: 128 >>> 5 === 4. Actual: ' + (128 >>> 5));
+}
+
+
+if (256 >>> 5 !== 8) {
+ $ERROR('#169: 256 >>> 5 === 8. Actual: ' + (256 >>> 5));
+}
+
+
+if (512 >>> 5 !== 16) {
+ $ERROR('#170: 512 >>> 5 === 16. Actual: ' + (512 >>> 5));
+}
+
+
+if (1024 >>> 5 !== 32) {
+ $ERROR('#171: 1024 >>> 5 === 32. Actual: ' + (1024 >>> 5));
+}
+
+
+if (2048 >>> 5 !== 64) {
+ $ERROR('#172: 2048 >>> 5 === 64. Actual: ' + (2048 >>> 5));
+}
+
+
+if (4096 >>> 5 !== 128) {
+ $ERROR('#173: 4096 >>> 5 === 128. Actual: ' + (4096 >>> 5));
+}
+
+
+if (8192 >>> 5 !== 256) {
+ $ERROR('#174: 8192 >>> 5 === 256. Actual: ' + (8192 >>> 5));
+}
+
+
+if (16384 >>> 5 !== 512) {
+ $ERROR('#175: 16384 >>> 5 === 512. Actual: ' + (16384 >>> 5));
+}
+
+
+if (32768 >>> 5 !== 1024) {
+ $ERROR('#176: 32768 >>> 5 === 1024. Actual: ' + (32768 >>> 5));
+}
+
+
+if (65536 >>> 5 !== 2048) {
+ $ERROR('#177: 65536 >>> 5 === 2048. Actual: ' + (65536 >>> 5));
+}
+
+
+if (131072 >>> 5 !== 4096) {
+ $ERROR('#178: 131072 >>> 5 === 4096. Actual: ' + (131072 >>> 5));
+}
+
+
+if (262144 >>> 5 !== 8192) {
+ $ERROR('#179: 262144 >>> 5 === 8192. Actual: ' + (262144 >>> 5));
+}
+
+
+if (524288 >>> 5 !== 16384) {
+ $ERROR('#180: 524288 >>> 5 === 16384. Actual: ' + (524288 >>> 5));
+}
+
+
+if (1048576 >>> 5 !== 32768) {
+ $ERROR('#181: 1048576 >>> 5 === 32768. Actual: ' + (1048576 >>> 5));
+}
+
+
+if (2097152 >>> 5 !== 65536) {
+ $ERROR('#182: 2097152 >>> 5 === 65536. Actual: ' + (2097152 >>> 5));
+}
+
+
+if (4194304 >>> 5 !== 131072) {
+ $ERROR('#183: 4194304 >>> 5 === 131072. Actual: ' + (4194304 >>> 5));
+}
+
+
+if (8388608 >>> 5 !== 262144) {
+ $ERROR('#184: 8388608 >>> 5 === 262144. Actual: ' + (8388608 >>> 5));
+}
+
+
+if (16777216 >>> 5 !== 524288) {
+ $ERROR('#185: 16777216 >>> 5 === 524288. Actual: ' + (16777216 >>> 5));
+}
+
+
+if (33554432 >>> 5 !== 1048576) {
+ $ERROR('#186: 33554432 >>> 5 === 1048576. Actual: ' + (33554432 >>> 5));
+}
+
+
+if (67108864 >>> 5 !== 2097152) {
+ $ERROR('#187: 67108864 >>> 5 === 2097152. Actual: ' + (67108864 >>> 5));
+}
+
+
+if (134217728 >>> 5 !== 4194304) {
+ $ERROR('#188: 134217728 >>> 5 === 4194304. Actual: ' + (134217728 >>> 5));
+}
+
+
+if (268435456 >>> 5 !== 8388608) {
+ $ERROR('#189: 268435456 >>> 5 === 8388608. Actual: ' + (268435456 >>> 5));
+}
+
+
+if (536870912 >>> 5 !== 16777216) {
+ $ERROR('#190: 536870912 >>> 5 === 16777216. Actual: ' + (536870912 >>> 5));
+}
+
+
+if (1073741824 >>> 5 !== 33554432) {
+ $ERROR('#191: 1073741824 >>> 5 === 33554432. Actual: ' + (1073741824 >>> 5));
+}
+
+
+if (2147483648 >>> 5 !== 67108864) {
+ $ERROR('#192: 2147483648 >>> 5 === 67108864. Actual: ' + (2147483648 >>> 5));
+}
+
+
+if (1 >>> 6 !== 0) {
+ $ERROR('#193: 1 >>> 6 === 0. Actual: ' + (1 >>> 6));
+}
+
+
+if (2 >>> 6 !== 0) {
+ $ERROR('#194: 2 >>> 6 === 0. Actual: ' + (2 >>> 6));
+}
+
+
+if (4 >>> 6 !== 0) {
+ $ERROR('#195: 4 >>> 6 === 0. Actual: ' + (4 >>> 6));
+}
+
+
+if (8 >>> 6 !== 0) {
+ $ERROR('#196: 8 >>> 6 === 0. Actual: ' + (8 >>> 6));
+}
+
+
+if (16 >>> 6 !== 0) {
+ $ERROR('#197: 16 >>> 6 === 0. Actual: ' + (16 >>> 6));
+}
+
+
+if (32 >>> 6 !== 0) {
+ $ERROR('#198: 32 >>> 6 === 0. Actual: ' + (32 >>> 6));
+}
+
+
+if (64 >>> 6 !== 1) {
+ $ERROR('#199: 64 >>> 6 === 1. Actual: ' + (64 >>> 6));
+}
+
+
+if (128 >>> 6 !== 2) {
+ $ERROR('#200: 128 >>> 6 === 2. Actual: ' + (128 >>> 6));
+}
+
+
+if (256 >>> 6 !== 4) {
+ $ERROR('#201: 256 >>> 6 === 4. Actual: ' + (256 >>> 6));
+}
+
+
+if (512 >>> 6 !== 8) {
+ $ERROR('#202: 512 >>> 6 === 8. Actual: ' + (512 >>> 6));
+}
+
+
+if (1024 >>> 6 !== 16) {
+ $ERROR('#203: 1024 >>> 6 === 16. Actual: ' + (1024 >>> 6));
+}
+
+
+if (2048 >>> 6 !== 32) {
+ $ERROR('#204: 2048 >>> 6 === 32. Actual: ' + (2048 >>> 6));
+}
+
+
+if (4096 >>> 6 !== 64) {
+ $ERROR('#205: 4096 >>> 6 === 64. Actual: ' + (4096 >>> 6));
+}
+
+
+if (8192 >>> 6 !== 128) {
+ $ERROR('#206: 8192 >>> 6 === 128. Actual: ' + (8192 >>> 6));
+}
+
+
+if (16384 >>> 6 !== 256) {
+ $ERROR('#207: 16384 >>> 6 === 256. Actual: ' + (16384 >>> 6));
+}
+
+
+if (32768 >>> 6 !== 512) {
+ $ERROR('#208: 32768 >>> 6 === 512. Actual: ' + (32768 >>> 6));
+}
+
+
+if (65536 >>> 6 !== 1024) {
+ $ERROR('#209: 65536 >>> 6 === 1024. Actual: ' + (65536 >>> 6));
+}
+
+
+if (131072 >>> 6 !== 2048) {
+ $ERROR('#210: 131072 >>> 6 === 2048. Actual: ' + (131072 >>> 6));
+}
+
+
+if (262144 >>> 6 !== 4096) {
+ $ERROR('#211: 262144 >>> 6 === 4096. Actual: ' + (262144 >>> 6));
+}
+
+
+if (524288 >>> 6 !== 8192) {
+ $ERROR('#212: 524288 >>> 6 === 8192. Actual: ' + (524288 >>> 6));
+}
+
+
+if (1048576 >>> 6 !== 16384) {
+ $ERROR('#213: 1048576 >>> 6 === 16384. Actual: ' + (1048576 >>> 6));
+}
+
+
+if (2097152 >>> 6 !== 32768) {
+ $ERROR('#214: 2097152 >>> 6 === 32768. Actual: ' + (2097152 >>> 6));
+}
+
+
+if (4194304 >>> 6 !== 65536) {
+ $ERROR('#215: 4194304 >>> 6 === 65536. Actual: ' + (4194304 >>> 6));
+}
+
+
+if (8388608 >>> 6 !== 131072) {
+ $ERROR('#216: 8388608 >>> 6 === 131072. Actual: ' + (8388608 >>> 6));
+}
+
+
+if (16777216 >>> 6 !== 262144) {
+ $ERROR('#217: 16777216 >>> 6 === 262144. Actual: ' + (16777216 >>> 6));
+}
+
+
+if (33554432 >>> 6 !== 524288) {
+ $ERROR('#218: 33554432 >>> 6 === 524288. Actual: ' + (33554432 >>> 6));
+}
+
+
+if (67108864 >>> 6 !== 1048576) {
+ $ERROR('#219: 67108864 >>> 6 === 1048576. Actual: ' + (67108864 >>> 6));
+}
+
+
+if (134217728 >>> 6 !== 2097152) {
+ $ERROR('#220: 134217728 >>> 6 === 2097152. Actual: ' + (134217728 >>> 6));
+}
+
+
+if (268435456 >>> 6 !== 4194304) {
+ $ERROR('#221: 268435456 >>> 6 === 4194304. Actual: ' + (268435456 >>> 6));
+}
+
+
+if (536870912 >>> 6 !== 8388608) {
+ $ERROR('#222: 536870912 >>> 6 === 8388608. Actual: ' + (536870912 >>> 6));
+}
+
+
+if (1073741824 >>> 6 !== 16777216) {
+ $ERROR('#223: 1073741824 >>> 6 === 16777216. Actual: ' + (1073741824 >>> 6));
+}
+
+
+if (2147483648 >>> 6 !== 33554432) {
+ $ERROR('#224: 2147483648 >>> 6 === 33554432. Actual: ' + (2147483648 >>> 6));
+}
+
+
+if (1 >>> 7 !== 0) {
+ $ERROR('#225: 1 >>> 7 === 0. Actual: ' + (1 >>> 7));
+}
+
+
+if (2 >>> 7 !== 0) {
+ $ERROR('#226: 2 >>> 7 === 0. Actual: ' + (2 >>> 7));
+}
+
+
+if (4 >>> 7 !== 0) {
+ $ERROR('#227: 4 >>> 7 === 0. Actual: ' + (4 >>> 7));
+}
+
+
+if (8 >>> 7 !== 0) {
+ $ERROR('#228: 8 >>> 7 === 0. Actual: ' + (8 >>> 7));
+}
+
+
+if (16 >>> 7 !== 0) {
+ $ERROR('#229: 16 >>> 7 === 0. Actual: ' + (16 >>> 7));
+}
+
+
+if (32 >>> 7 !== 0) {
+ $ERROR('#230: 32 >>> 7 === 0. Actual: ' + (32 >>> 7));
+}
+
+
+if (64 >>> 7 !== 0) {
+ $ERROR('#231: 64 >>> 7 === 0. Actual: ' + (64 >>> 7));
+}
+
+
+if (128 >>> 7 !== 1) {
+ $ERROR('#232: 128 >>> 7 === 1. Actual: ' + (128 >>> 7));
+}
+
+
+if (256 >>> 7 !== 2) {
+ $ERROR('#233: 256 >>> 7 === 2. Actual: ' + (256 >>> 7));
+}
+
+
+if (512 >>> 7 !== 4) {
+ $ERROR('#234: 512 >>> 7 === 4. Actual: ' + (512 >>> 7));
+}
+
+
+if (1024 >>> 7 !== 8) {
+ $ERROR('#235: 1024 >>> 7 === 8. Actual: ' + (1024 >>> 7));
+}
+
+
+if (2048 >>> 7 !== 16) {
+ $ERROR('#236: 2048 >>> 7 === 16. Actual: ' + (2048 >>> 7));
+}
+
+
+if (4096 >>> 7 !== 32) {
+ $ERROR('#237: 4096 >>> 7 === 32. Actual: ' + (4096 >>> 7));
+}
+
+
+if (8192 >>> 7 !== 64) {
+ $ERROR('#238: 8192 >>> 7 === 64. Actual: ' + (8192 >>> 7));
+}
+
+
+if (16384 >>> 7 !== 128) {
+ $ERROR('#239: 16384 >>> 7 === 128. Actual: ' + (16384 >>> 7));
+}
+
+
+if (32768 >>> 7 !== 256) {
+ $ERROR('#240: 32768 >>> 7 === 256. Actual: ' + (32768 >>> 7));
+}
+
+
+if (65536 >>> 7 !== 512) {
+ $ERROR('#241: 65536 >>> 7 === 512. Actual: ' + (65536 >>> 7));
+}
+
+
+if (131072 >>> 7 !== 1024) {
+ $ERROR('#242: 131072 >>> 7 === 1024. Actual: ' + (131072 >>> 7));
+}
+
+
+if (262144 >>> 7 !== 2048) {
+ $ERROR('#243: 262144 >>> 7 === 2048. Actual: ' + (262144 >>> 7));
+}
+
+
+if (524288 >>> 7 !== 4096) {
+ $ERROR('#244: 524288 >>> 7 === 4096. Actual: ' + (524288 >>> 7));
+}
+
+
+if (1048576 >>> 7 !== 8192) {
+ $ERROR('#245: 1048576 >>> 7 === 8192. Actual: ' + (1048576 >>> 7));
+}
+
+
+if (2097152 >>> 7 !== 16384) {
+ $ERROR('#246: 2097152 >>> 7 === 16384. Actual: ' + (2097152 >>> 7));
+}
+
+
+if (4194304 >>> 7 !== 32768) {
+ $ERROR('#247: 4194304 >>> 7 === 32768. Actual: ' + (4194304 >>> 7));
+}
+
+
+if (8388608 >>> 7 !== 65536) {
+ $ERROR('#248: 8388608 >>> 7 === 65536. Actual: ' + (8388608 >>> 7));
+}
+
+
+if (16777216 >>> 7 !== 131072) {
+ $ERROR('#249: 16777216 >>> 7 === 131072. Actual: ' + (16777216 >>> 7));
+}
+
+
+if (33554432 >>> 7 !== 262144) {
+ $ERROR('#250: 33554432 >>> 7 === 262144. Actual: ' + (33554432 >>> 7));
+}
+
+
+if (67108864 >>> 7 !== 524288) {
+ $ERROR('#251: 67108864 >>> 7 === 524288. Actual: ' + (67108864 >>> 7));
+}
+
+
+if (134217728 >>> 7 !== 1048576) {
+ $ERROR('#252: 134217728 >>> 7 === 1048576. Actual: ' + (134217728 >>> 7));
+}
+
+
+if (268435456 >>> 7 !== 2097152) {
+ $ERROR('#253: 268435456 >>> 7 === 2097152. Actual: ' + (268435456 >>> 7));
+}
+
+
+if (536870912 >>> 7 !== 4194304) {
+ $ERROR('#254: 536870912 >>> 7 === 4194304. Actual: ' + (536870912 >>> 7));
+}
+
+
+if (1073741824 >>> 7 !== 8388608) {
+ $ERROR('#255: 1073741824 >>> 7 === 8388608. Actual: ' + (1073741824 >>> 7));
+}
+
+
+if (2147483648 >>> 7 !== 16777216) {
+ $ERROR('#256: 2147483648 >>> 7 === 16777216. Actual: ' + (2147483648 >>> 7));
+}
+
+
+if (1 >>> 8 !== 0) {
+ $ERROR('#257: 1 >>> 8 === 0. Actual: ' + (1 >>> 8));
+}
+
+
+if (2 >>> 8 !== 0) {
+ $ERROR('#258: 2 >>> 8 === 0. Actual: ' + (2 >>> 8));
+}
+
+
+if (4 >>> 8 !== 0) {
+ $ERROR('#259: 4 >>> 8 === 0. Actual: ' + (4 >>> 8));
+}
+
+
+if (8 >>> 8 !== 0) {
+ $ERROR('#260: 8 >>> 8 === 0. Actual: ' + (8 >>> 8));
+}
+
+
+if (16 >>> 8 !== 0) {
+ $ERROR('#261: 16 >>> 8 === 0. Actual: ' + (16 >>> 8));
+}
+
+
+if (32 >>> 8 !== 0) {
+ $ERROR('#262: 32 >>> 8 === 0. Actual: ' + (32 >>> 8));
+}
+
+
+if (64 >>> 8 !== 0) {
+ $ERROR('#263: 64 >>> 8 === 0. Actual: ' + (64 >>> 8));
+}
+
+
+if (128 >>> 8 !== 0) {
+ $ERROR('#264: 128 >>> 8 === 0. Actual: ' + (128 >>> 8));
+}
+
+
+if (256 >>> 8 !== 1) {
+ $ERROR('#265: 256 >>> 8 === 1. Actual: ' + (256 >>> 8));
+}
+
+
+if (512 >>> 8 !== 2) {
+ $ERROR('#266: 512 >>> 8 === 2. Actual: ' + (512 >>> 8));
+}
+
+
+if (1024 >>> 8 !== 4) {
+ $ERROR('#267: 1024 >>> 8 === 4. Actual: ' + (1024 >>> 8));
+}
+
+
+if (2048 >>> 8 !== 8) {
+ $ERROR('#268: 2048 >>> 8 === 8. Actual: ' + (2048 >>> 8));
+}
+
+
+if (4096 >>> 8 !== 16) {
+ $ERROR('#269: 4096 >>> 8 === 16. Actual: ' + (4096 >>> 8));
+}
+
+
+if (8192 >>> 8 !== 32) {
+ $ERROR('#270: 8192 >>> 8 === 32. Actual: ' + (8192 >>> 8));
+}
+
+
+if (16384 >>> 8 !== 64) {
+ $ERROR('#271: 16384 >>> 8 === 64. Actual: ' + (16384 >>> 8));
+}
+
+
+if (32768 >>> 8 !== 128) {
+ $ERROR('#272: 32768 >>> 8 === 128. Actual: ' + (32768 >>> 8));
+}
+
+
+if (65536 >>> 8 !== 256) {
+ $ERROR('#273: 65536 >>> 8 === 256. Actual: ' + (65536 >>> 8));
+}
+
+
+if (131072 >>> 8 !== 512) {
+ $ERROR('#274: 131072 >>> 8 === 512. Actual: ' + (131072 >>> 8));
+}
+
+
+if (262144 >>> 8 !== 1024) {
+ $ERROR('#275: 262144 >>> 8 === 1024. Actual: ' + (262144 >>> 8));
+}
+
+
+if (524288 >>> 8 !== 2048) {
+ $ERROR('#276: 524288 >>> 8 === 2048. Actual: ' + (524288 >>> 8));
+}
+
+
+if (1048576 >>> 8 !== 4096) {
+ $ERROR('#277: 1048576 >>> 8 === 4096. Actual: ' + (1048576 >>> 8));
+}
+
+
+if (2097152 >>> 8 !== 8192) {
+ $ERROR('#278: 2097152 >>> 8 === 8192. Actual: ' + (2097152 >>> 8));
+}
+
+
+if (4194304 >>> 8 !== 16384) {
+ $ERROR('#279: 4194304 >>> 8 === 16384. Actual: ' + (4194304 >>> 8));
+}
+
+
+if (8388608 >>> 8 !== 32768) {
+ $ERROR('#280: 8388608 >>> 8 === 32768. Actual: ' + (8388608 >>> 8));
+}
+
+
+if (16777216 >>> 8 !== 65536) {
+ $ERROR('#281: 16777216 >>> 8 === 65536. Actual: ' + (16777216 >>> 8));
+}
+
+
+if (33554432 >>> 8 !== 131072) {
+ $ERROR('#282: 33554432 >>> 8 === 131072. Actual: ' + (33554432 >>> 8));
+}
+
+
+if (67108864 >>> 8 !== 262144) {
+ $ERROR('#283: 67108864 >>> 8 === 262144. Actual: ' + (67108864 >>> 8));
+}
+
+
+if (134217728 >>> 8 !== 524288) {
+ $ERROR('#284: 134217728 >>> 8 === 524288. Actual: ' + (134217728 >>> 8));
+}
+
+
+if (268435456 >>> 8 !== 1048576) {
+ $ERROR('#285: 268435456 >>> 8 === 1048576. Actual: ' + (268435456 >>> 8));
+}
+
+
+if (536870912 >>> 8 !== 2097152) {
+ $ERROR('#286: 536870912 >>> 8 === 2097152. Actual: ' + (536870912 >>> 8));
+}
+
+
+if (1073741824 >>> 8 !== 4194304) {
+ $ERROR('#287: 1073741824 >>> 8 === 4194304. Actual: ' + (1073741824 >>> 8));
+}
+
+
+if (2147483648 >>> 8 !== 8388608) {
+ $ERROR('#288: 2147483648 >>> 8 === 8388608. Actual: ' + (2147483648 >>> 8));
+}
+
+
+if (1 >>> 9 !== 0) {
+ $ERROR('#289: 1 >>> 9 === 0. Actual: ' + (1 >>> 9));
+}
+
+
+if (2 >>> 9 !== 0) {
+ $ERROR('#290: 2 >>> 9 === 0. Actual: ' + (2 >>> 9));
+}
+
+
+if (4 >>> 9 !== 0) {
+ $ERROR('#291: 4 >>> 9 === 0. Actual: ' + (4 >>> 9));
+}
+
+
+if (8 >>> 9 !== 0) {
+ $ERROR('#292: 8 >>> 9 === 0. Actual: ' + (8 >>> 9));
+}
+
+
+if (16 >>> 9 !== 0) {
+ $ERROR('#293: 16 >>> 9 === 0. Actual: ' + (16 >>> 9));
+}
+
+
+if (32 >>> 9 !== 0) {
+ $ERROR('#294: 32 >>> 9 === 0. Actual: ' + (32 >>> 9));
+}
+
+
+if (64 >>> 9 !== 0) {
+ $ERROR('#295: 64 >>> 9 === 0. Actual: ' + (64 >>> 9));
+}
+
+
+if (128 >>> 9 !== 0) {
+ $ERROR('#296: 128 >>> 9 === 0. Actual: ' + (128 >>> 9));
+}
+
+
+if (256 >>> 9 !== 0) {
+ $ERROR('#297: 256 >>> 9 === 0. Actual: ' + (256 >>> 9));
+}
+
+
+if (512 >>> 9 !== 1) {
+ $ERROR('#298: 512 >>> 9 === 1. Actual: ' + (512 >>> 9));
+}
+
+
+if (1024 >>> 9 !== 2) {
+ $ERROR('#299: 1024 >>> 9 === 2. Actual: ' + (1024 >>> 9));
+}
+
+
+if (2048 >>> 9 !== 4) {
+ $ERROR('#300: 2048 >>> 9 === 4. Actual: ' + (2048 >>> 9));
+}
+
+
+if (4096 >>> 9 !== 8) {
+ $ERROR('#301: 4096 >>> 9 === 8. Actual: ' + (4096 >>> 9));
+}
+
+
+if (8192 >>> 9 !== 16) {
+ $ERROR('#302: 8192 >>> 9 === 16. Actual: ' + (8192 >>> 9));
+}
+
+
+if (16384 >>> 9 !== 32) {
+ $ERROR('#303: 16384 >>> 9 === 32. Actual: ' + (16384 >>> 9));
+}
+
+
+if (32768 >>> 9 !== 64) {
+ $ERROR('#304: 32768 >>> 9 === 64. Actual: ' + (32768 >>> 9));
+}
+
+
+if (65536 >>> 9 !== 128) {
+ $ERROR('#305: 65536 >>> 9 === 128. Actual: ' + (65536 >>> 9));
+}
+
+
+if (131072 >>> 9 !== 256) {
+ $ERROR('#306: 131072 >>> 9 === 256. Actual: ' + (131072 >>> 9));
+}
+
+
+if (262144 >>> 9 !== 512) {
+ $ERROR('#307: 262144 >>> 9 === 512. Actual: ' + (262144 >>> 9));
+}
+
+
+if (524288 >>> 9 !== 1024) {
+ $ERROR('#308: 524288 >>> 9 === 1024. Actual: ' + (524288 >>> 9));
+}
+
+
+if (1048576 >>> 9 !== 2048) {
+ $ERROR('#309: 1048576 >>> 9 === 2048. Actual: ' + (1048576 >>> 9));
+}
+
+
+if (2097152 >>> 9 !== 4096) {
+ $ERROR('#310: 2097152 >>> 9 === 4096. Actual: ' + (2097152 >>> 9));
+}
+
+
+if (4194304 >>> 9 !== 8192) {
+ $ERROR('#311: 4194304 >>> 9 === 8192. Actual: ' + (4194304 >>> 9));
+}
+
+
+if (8388608 >>> 9 !== 16384) {
+ $ERROR('#312: 8388608 >>> 9 === 16384. Actual: ' + (8388608 >>> 9));
+}
+
+
+if (16777216 >>> 9 !== 32768) {
+ $ERROR('#313: 16777216 >>> 9 === 32768. Actual: ' + (16777216 >>> 9));
+}
+
+
+if (33554432 >>> 9 !== 65536) {
+ $ERROR('#314: 33554432 >>> 9 === 65536. Actual: ' + (33554432 >>> 9));
+}
+
+
+if (67108864 >>> 9 !== 131072) {
+ $ERROR('#315: 67108864 >>> 9 === 131072. Actual: ' + (67108864 >>> 9));
+}
+
+
+if (134217728 >>> 9 !== 262144) {
+ $ERROR('#316: 134217728 >>> 9 === 262144. Actual: ' + (134217728 >>> 9));
+}
+
+
+if (268435456 >>> 9 !== 524288) {
+ $ERROR('#317: 268435456 >>> 9 === 524288. Actual: ' + (268435456 >>> 9));
+}
+
+
+if (536870912 >>> 9 !== 1048576) {
+ $ERROR('#318: 536870912 >>> 9 === 1048576. Actual: ' + (536870912 >>> 9));
+}
+
+
+if (1073741824 >>> 9 !== 2097152) {
+ $ERROR('#319: 1073741824 >>> 9 === 2097152. Actual: ' + (1073741824 >>> 9));
+}
+
+
+if (2147483648 >>> 9 !== 4194304) {
+ $ERROR('#320: 2147483648 >>> 9 === 4194304. Actual: ' + (2147483648 >>> 9));
+}
+
+
+if (1 >>> 10 !== 0) {
+ $ERROR('#321: 1 >>> 10 === 0. Actual: ' + (1 >>> 10));
+}
+
+
+if (2 >>> 10 !== 0) {
+ $ERROR('#322: 2 >>> 10 === 0. Actual: ' + (2 >>> 10));
+}
+
+
+if (4 >>> 10 !== 0) {
+ $ERROR('#323: 4 >>> 10 === 0. Actual: ' + (4 >>> 10));
+}
+
+
+if (8 >>> 10 !== 0) {
+ $ERROR('#324: 8 >>> 10 === 0. Actual: ' + (8 >>> 10));
+}
+
+
+if (16 >>> 10 !== 0) {
+ $ERROR('#325: 16 >>> 10 === 0. Actual: ' + (16 >>> 10));
+}
+
+
+if (32 >>> 10 !== 0) {
+ $ERROR('#326: 32 >>> 10 === 0. Actual: ' + (32 >>> 10));
+}
+
+
+if (64 >>> 10 !== 0) {
+ $ERROR('#327: 64 >>> 10 === 0. Actual: ' + (64 >>> 10));
+}
+
+
+if (128 >>> 10 !== 0) {
+ $ERROR('#328: 128 >>> 10 === 0. Actual: ' + (128 >>> 10));
+}
+
+
+if (256 >>> 10 !== 0) {
+ $ERROR('#329: 256 >>> 10 === 0. Actual: ' + (256 >>> 10));
+}
+
+
+if (512 >>> 10 !== 0) {
+ $ERROR('#330: 512 >>> 10 === 0. Actual: ' + (512 >>> 10));
+}
+
+
+if (1024 >>> 10 !== 1) {
+ $ERROR('#331: 1024 >>> 10 === 1. Actual: ' + (1024 >>> 10));
+}
+
+
+if (2048 >>> 10 !== 2) {
+ $ERROR('#332: 2048 >>> 10 === 2. Actual: ' + (2048 >>> 10));
+}
+
+
+if (4096 >>> 10 !== 4) {
+ $ERROR('#333: 4096 >>> 10 === 4. Actual: ' + (4096 >>> 10));
+}
+
+
+if (8192 >>> 10 !== 8) {
+ $ERROR('#334: 8192 >>> 10 === 8. Actual: ' + (8192 >>> 10));
+}
+
+
+if (16384 >>> 10 !== 16) {
+ $ERROR('#335: 16384 >>> 10 === 16. Actual: ' + (16384 >>> 10));
+}
+
+
+if (32768 >>> 10 !== 32) {
+ $ERROR('#336: 32768 >>> 10 === 32. Actual: ' + (32768 >>> 10));
+}
+
+
+if (65536 >>> 10 !== 64) {
+ $ERROR('#337: 65536 >>> 10 === 64. Actual: ' + (65536 >>> 10));
+}
+
+
+if (131072 >>> 10 !== 128) {
+ $ERROR('#338: 131072 >>> 10 === 128. Actual: ' + (131072 >>> 10));
+}
+
+
+if (262144 >>> 10 !== 256) {
+ $ERROR('#339: 262144 >>> 10 === 256. Actual: ' + (262144 >>> 10));
+}
+
+
+if (524288 >>> 10 !== 512) {
+ $ERROR('#340: 524288 >>> 10 === 512. Actual: ' + (524288 >>> 10));
+}
+
+
+if (1048576 >>> 10 !== 1024) {
+ $ERROR('#341: 1048576 >>> 10 === 1024. Actual: ' + (1048576 >>> 10));
+}
+
+
+if (2097152 >>> 10 !== 2048) {
+ $ERROR('#342: 2097152 >>> 10 === 2048. Actual: ' + (2097152 >>> 10));
+}
+
+
+if (4194304 >>> 10 !== 4096) {
+ $ERROR('#343: 4194304 >>> 10 === 4096. Actual: ' + (4194304 >>> 10));
+}
+
+
+if (8388608 >>> 10 !== 8192) {
+ $ERROR('#344: 8388608 >>> 10 === 8192. Actual: ' + (8388608 >>> 10));
+}
+
+
+if (16777216 >>> 10 !== 16384) {
+ $ERROR('#345: 16777216 >>> 10 === 16384. Actual: ' + (16777216 >>> 10));
+}
+
+
+if (33554432 >>> 10 !== 32768) {
+ $ERROR('#346: 33554432 >>> 10 === 32768. Actual: ' + (33554432 >>> 10));
+}
+
+
+if (67108864 >>> 10 !== 65536) {
+ $ERROR('#347: 67108864 >>> 10 === 65536. Actual: ' + (67108864 >>> 10));
+}
+
+
+if (134217728 >>> 10 !== 131072) {
+ $ERROR('#348: 134217728 >>> 10 === 131072. Actual: ' + (134217728 >>> 10));
+}
+
+
+if (268435456 >>> 10 !== 262144) {
+ $ERROR('#349: 268435456 >>> 10 === 262144. Actual: ' + (268435456 >>> 10));
+}
+
+
+if (536870912 >>> 10 !== 524288) {
+ $ERROR('#350: 536870912 >>> 10 === 524288. Actual: ' + (536870912 >>> 10));
+}
+
+
+if (1073741824 >>> 10 !== 1048576) {
+ $ERROR('#351: 1073741824 >>> 10 === 1048576. Actual: ' + (1073741824 >>> 10));
+}
+
+
+if (2147483648 >>> 10 !== 2097152) {
+ $ERROR('#352: 2147483648 >>> 10 === 2097152. Actual: ' + (2147483648 >>> 10));
+}
+
+
+if (1 >>> 11 !== 0) {
+ $ERROR('#353: 1 >>> 11 === 0. Actual: ' + (1 >>> 11));
+}
+
+
+if (2 >>> 11 !== 0) {
+ $ERROR('#354: 2 >>> 11 === 0. Actual: ' + (2 >>> 11));
+}
+
+
+if (4 >>> 11 !== 0) {
+ $ERROR('#355: 4 >>> 11 === 0. Actual: ' + (4 >>> 11));
+}
+
+
+if (8 >>> 11 !== 0) {
+ $ERROR('#356: 8 >>> 11 === 0. Actual: ' + (8 >>> 11));
+}
+
+
+if (16 >>> 11 !== 0) {
+ $ERROR('#357: 16 >>> 11 === 0. Actual: ' + (16 >>> 11));
+}
+
+
+if (32 >>> 11 !== 0) {
+ $ERROR('#358: 32 >>> 11 === 0. Actual: ' + (32 >>> 11));
+}
+
+
+if (64 >>> 11 !== 0) {
+ $ERROR('#359: 64 >>> 11 === 0. Actual: ' + (64 >>> 11));
+}
+
+
+if (128 >>> 11 !== 0) {
+ $ERROR('#360: 128 >>> 11 === 0. Actual: ' + (128 >>> 11));
+}
+
+
+if (256 >>> 11 !== 0) {
+ $ERROR('#361: 256 >>> 11 === 0. Actual: ' + (256 >>> 11));
+}
+
+
+if (512 >>> 11 !== 0) {
+ $ERROR('#362: 512 >>> 11 === 0. Actual: ' + (512 >>> 11));
+}
+
+
+if (1024 >>> 11 !== 0) {
+ $ERROR('#363: 1024 >>> 11 === 0. Actual: ' + (1024 >>> 11));
+}
+
+
+if (2048 >>> 11 !== 1) {
+ $ERROR('#364: 2048 >>> 11 === 1. Actual: ' + (2048 >>> 11));
+}
+
+
+if (4096 >>> 11 !== 2) {
+ $ERROR('#365: 4096 >>> 11 === 2. Actual: ' + (4096 >>> 11));
+}
+
+
+if (8192 >>> 11 !== 4) {
+ $ERROR('#366: 8192 >>> 11 === 4. Actual: ' + (8192 >>> 11));
+}
+
+
+if (16384 >>> 11 !== 8) {
+ $ERROR('#367: 16384 >>> 11 === 8. Actual: ' + (16384 >>> 11));
+}
+
+
+if (32768 >>> 11 !== 16) {
+ $ERROR('#368: 32768 >>> 11 === 16. Actual: ' + (32768 >>> 11));
+}
+
+
+if (65536 >>> 11 !== 32) {
+ $ERROR('#369: 65536 >>> 11 === 32. Actual: ' + (65536 >>> 11));
+}
+
+
+if (131072 >>> 11 !== 64) {
+ $ERROR('#370: 131072 >>> 11 === 64. Actual: ' + (131072 >>> 11));
+}
+
+
+if (262144 >>> 11 !== 128) {
+ $ERROR('#371: 262144 >>> 11 === 128. Actual: ' + (262144 >>> 11));
+}
+
+
+if (524288 >>> 11 !== 256) {
+ $ERROR('#372: 524288 >>> 11 === 256. Actual: ' + (524288 >>> 11));
+}
+
+
+if (1048576 >>> 11 !== 512) {
+ $ERROR('#373: 1048576 >>> 11 === 512. Actual: ' + (1048576 >>> 11));
+}
+
+
+if (2097152 >>> 11 !== 1024) {
+ $ERROR('#374: 2097152 >>> 11 === 1024. Actual: ' + (2097152 >>> 11));
+}
+
+
+if (4194304 >>> 11 !== 2048) {
+ $ERROR('#375: 4194304 >>> 11 === 2048. Actual: ' + (4194304 >>> 11));
+}
+
+
+if (8388608 >>> 11 !== 4096) {
+ $ERROR('#376: 8388608 >>> 11 === 4096. Actual: ' + (8388608 >>> 11));
+}
+
+
+if (16777216 >>> 11 !== 8192) {
+ $ERROR('#377: 16777216 >>> 11 === 8192. Actual: ' + (16777216 >>> 11));
+}
+
+
+if (33554432 >>> 11 !== 16384) {
+ $ERROR('#378: 33554432 >>> 11 === 16384. Actual: ' + (33554432 >>> 11));
+}
+
+
+if (67108864 >>> 11 !== 32768) {
+ $ERROR('#379: 67108864 >>> 11 === 32768. Actual: ' + (67108864 >>> 11));
+}
+
+
+if (134217728 >>> 11 !== 65536) {
+ $ERROR('#380: 134217728 >>> 11 === 65536. Actual: ' + (134217728 >>> 11));
+}
+
+
+if (268435456 >>> 11 !== 131072) {
+ $ERROR('#381: 268435456 >>> 11 === 131072. Actual: ' + (268435456 >>> 11));
+}
+
+
+if (536870912 >>> 11 !== 262144) {
+ $ERROR('#382: 536870912 >>> 11 === 262144. Actual: ' + (536870912 >>> 11));
+}
+
+
+if (1073741824 >>> 11 !== 524288) {
+ $ERROR('#383: 1073741824 >>> 11 === 524288. Actual: ' + (1073741824 >>> 11));
+}
+
+
+if (2147483648 >>> 11 !== 1048576) {
+ $ERROR('#384: 2147483648 >>> 11 === 1048576. Actual: ' + (2147483648 >>> 11));
+}
+
+
+if (1 >>> 12 !== 0) {
+ $ERROR('#385: 1 >>> 12 === 0. Actual: ' + (1 >>> 12));
+}
+
+
+if (2 >>> 12 !== 0) {
+ $ERROR('#386: 2 >>> 12 === 0. Actual: ' + (2 >>> 12));
+}
+
+
+if (4 >>> 12 !== 0) {
+ $ERROR('#387: 4 >>> 12 === 0. Actual: ' + (4 >>> 12));
+}
+
+
+if (8 >>> 12 !== 0) {
+ $ERROR('#388: 8 >>> 12 === 0. Actual: ' + (8 >>> 12));
+}
+
+
+if (16 >>> 12 !== 0) {
+ $ERROR('#389: 16 >>> 12 === 0. Actual: ' + (16 >>> 12));
+}
+
+
+if (32 >>> 12 !== 0) {
+ $ERROR('#390: 32 >>> 12 === 0. Actual: ' + (32 >>> 12));
+}
+
+
+if (64 >>> 12 !== 0) {
+ $ERROR('#391: 64 >>> 12 === 0. Actual: ' + (64 >>> 12));
+}
+
+
+if (128 >>> 12 !== 0) {
+ $ERROR('#392: 128 >>> 12 === 0. Actual: ' + (128 >>> 12));
+}
+
+
+if (256 >>> 12 !== 0) {
+ $ERROR('#393: 256 >>> 12 === 0. Actual: ' + (256 >>> 12));
+}
+
+
+if (512 >>> 12 !== 0) {
+ $ERROR('#394: 512 >>> 12 === 0. Actual: ' + (512 >>> 12));
+}
+
+
+if (1024 >>> 12 !== 0) {
+ $ERROR('#395: 1024 >>> 12 === 0. Actual: ' + (1024 >>> 12));
+}
+
+
+if (2048 >>> 12 !== 0) {
+ $ERROR('#396: 2048 >>> 12 === 0. Actual: ' + (2048 >>> 12));
+}
+
+
+if (4096 >>> 12 !== 1) {
+ $ERROR('#397: 4096 >>> 12 === 1. Actual: ' + (4096 >>> 12));
+}
+
+
+if (8192 >>> 12 !== 2) {
+ $ERROR('#398: 8192 >>> 12 === 2. Actual: ' + (8192 >>> 12));
+}
+
+
+if (16384 >>> 12 !== 4) {
+ $ERROR('#399: 16384 >>> 12 === 4. Actual: ' + (16384 >>> 12));
+}
+
+
+if (32768 >>> 12 !== 8) {
+ $ERROR('#400: 32768 >>> 12 === 8. Actual: ' + (32768 >>> 12));
+}
+
+
+if (65536 >>> 12 !== 16) {
+ $ERROR('#401: 65536 >>> 12 === 16. Actual: ' + (65536 >>> 12));
+}
+
+
+if (131072 >>> 12 !== 32) {
+ $ERROR('#402: 131072 >>> 12 === 32. Actual: ' + (131072 >>> 12));
+}
+
+
+if (262144 >>> 12 !== 64) {
+ $ERROR('#403: 262144 >>> 12 === 64. Actual: ' + (262144 >>> 12));
+}
+
+
+if (524288 >>> 12 !== 128) {
+ $ERROR('#404: 524288 >>> 12 === 128. Actual: ' + (524288 >>> 12));
+}
+
+
+if (1048576 >>> 12 !== 256) {
+ $ERROR('#405: 1048576 >>> 12 === 256. Actual: ' + (1048576 >>> 12));
+}
+
+
+if (2097152 >>> 12 !== 512) {
+ $ERROR('#406: 2097152 >>> 12 === 512. Actual: ' + (2097152 >>> 12));
+}
+
+
+if (4194304 >>> 12 !== 1024) {
+ $ERROR('#407: 4194304 >>> 12 === 1024. Actual: ' + (4194304 >>> 12));
+}
+
+
+if (8388608 >>> 12 !== 2048) {
+ $ERROR('#408: 8388608 >>> 12 === 2048. Actual: ' + (8388608 >>> 12));
+}
+
+
+if (16777216 >>> 12 !== 4096) {
+ $ERROR('#409: 16777216 >>> 12 === 4096. Actual: ' + (16777216 >>> 12));
+}
+
+
+if (33554432 >>> 12 !== 8192) {
+ $ERROR('#410: 33554432 >>> 12 === 8192. Actual: ' + (33554432 >>> 12));
+}
+
+
+if (67108864 >>> 12 !== 16384) {
+ $ERROR('#411: 67108864 >>> 12 === 16384. Actual: ' + (67108864 >>> 12));
+}
+
+
+if (134217728 >>> 12 !== 32768) {
+ $ERROR('#412: 134217728 >>> 12 === 32768. Actual: ' + (134217728 >>> 12));
+}
+
+
+if (268435456 >>> 12 !== 65536) {
+ $ERROR('#413: 268435456 >>> 12 === 65536. Actual: ' + (268435456 >>> 12));
+}
+
+
+if (536870912 >>> 12 !== 131072) {
+ $ERROR('#414: 536870912 >>> 12 === 131072. Actual: ' + (536870912 >>> 12));
+}
+
+
+if (1073741824 >>> 12 !== 262144) {
+ $ERROR('#415: 1073741824 >>> 12 === 262144. Actual: ' + (1073741824 >>> 12));
+}
+
+
+if (2147483648 >>> 12 !== 524288) {
+ $ERROR('#416: 2147483648 >>> 12 === 524288. Actual: ' + (2147483648 >>> 12));
+}
+
+
+if (1 >>> 13 !== 0) {
+ $ERROR('#417: 1 >>> 13 === 0. Actual: ' + (1 >>> 13));
+}
+
+
+if (2 >>> 13 !== 0) {
+ $ERROR('#418: 2 >>> 13 === 0. Actual: ' + (2 >>> 13));
+}
+
+
+if (4 >>> 13 !== 0) {
+ $ERROR('#419: 4 >>> 13 === 0. Actual: ' + (4 >>> 13));
+}
+
+
+if (8 >>> 13 !== 0) {
+ $ERROR('#420: 8 >>> 13 === 0. Actual: ' + (8 >>> 13));
+}
+
+
+if (16 >>> 13 !== 0) {
+ $ERROR('#421: 16 >>> 13 === 0. Actual: ' + (16 >>> 13));
+}
+
+
+if (32 >>> 13 !== 0) {
+ $ERROR('#422: 32 >>> 13 === 0. Actual: ' + (32 >>> 13));
+}
+
+
+if (64 >>> 13 !== 0) {
+ $ERROR('#423: 64 >>> 13 === 0. Actual: ' + (64 >>> 13));
+}
+
+
+if (128 >>> 13 !== 0) {
+ $ERROR('#424: 128 >>> 13 === 0. Actual: ' + (128 >>> 13));
+}
+
+
+if (256 >>> 13 !== 0) {
+ $ERROR('#425: 256 >>> 13 === 0. Actual: ' + (256 >>> 13));
+}
+
+
+if (512 >>> 13 !== 0) {
+ $ERROR('#426: 512 >>> 13 === 0. Actual: ' + (512 >>> 13));
+}
+
+
+if (1024 >>> 13 !== 0) {
+ $ERROR('#427: 1024 >>> 13 === 0. Actual: ' + (1024 >>> 13));
+}
+
+
+if (2048 >>> 13 !== 0) {
+ $ERROR('#428: 2048 >>> 13 === 0. Actual: ' + (2048 >>> 13));
+}
+
+
+if (4096 >>> 13 !== 0) {
+ $ERROR('#429: 4096 >>> 13 === 0. Actual: ' + (4096 >>> 13));
+}
+
+
+if (8192 >>> 13 !== 1) {
+ $ERROR('#430: 8192 >>> 13 === 1. Actual: ' + (8192 >>> 13));
+}
+
+
+if (16384 >>> 13 !== 2) {
+ $ERROR('#431: 16384 >>> 13 === 2. Actual: ' + (16384 >>> 13));
+}
+
+
+if (32768 >>> 13 !== 4) {
+ $ERROR('#432: 32768 >>> 13 === 4. Actual: ' + (32768 >>> 13));
+}
+
+
+if (65536 >>> 13 !== 8) {
+ $ERROR('#433: 65536 >>> 13 === 8. Actual: ' + (65536 >>> 13));
+}
+
+
+if (131072 >>> 13 !== 16) {
+ $ERROR('#434: 131072 >>> 13 === 16. Actual: ' + (131072 >>> 13));
+}
+
+
+if (262144 >>> 13 !== 32) {
+ $ERROR('#435: 262144 >>> 13 === 32. Actual: ' + (262144 >>> 13));
+}
+
+
+if (524288 >>> 13 !== 64) {
+ $ERROR('#436: 524288 >>> 13 === 64. Actual: ' + (524288 >>> 13));
+}
+
+
+if (1048576 >>> 13 !== 128) {
+ $ERROR('#437: 1048576 >>> 13 === 128. Actual: ' + (1048576 >>> 13));
+}
+
+
+if (2097152 >>> 13 !== 256) {
+ $ERROR('#438: 2097152 >>> 13 === 256. Actual: ' + (2097152 >>> 13));
+}
+
+
+if (4194304 >>> 13 !== 512) {
+ $ERROR('#439: 4194304 >>> 13 === 512. Actual: ' + (4194304 >>> 13));
+}
+
+
+if (8388608 >>> 13 !== 1024) {
+ $ERROR('#440: 8388608 >>> 13 === 1024. Actual: ' + (8388608 >>> 13));
+}
+
+
+if (16777216 >>> 13 !== 2048) {
+ $ERROR('#441: 16777216 >>> 13 === 2048. Actual: ' + (16777216 >>> 13));
+}
+
+
+if (33554432 >>> 13 !== 4096) {
+ $ERROR('#442: 33554432 >>> 13 === 4096. Actual: ' + (33554432 >>> 13));
+}
+
+
+if (67108864 >>> 13 !== 8192) {
+ $ERROR('#443: 67108864 >>> 13 === 8192. Actual: ' + (67108864 >>> 13));
+}
+
+
+if (134217728 >>> 13 !== 16384) {
+ $ERROR('#444: 134217728 >>> 13 === 16384. Actual: ' + (134217728 >>> 13));
+}
+
+
+if (268435456 >>> 13 !== 32768) {
+ $ERROR('#445: 268435456 >>> 13 === 32768. Actual: ' + (268435456 >>> 13));
+}
+
+
+if (536870912 >>> 13 !== 65536) {
+ $ERROR('#446: 536870912 >>> 13 === 65536. Actual: ' + (536870912 >>> 13));
+}
+
+
+if (1073741824 >>> 13 !== 131072) {
+ $ERROR('#447: 1073741824 >>> 13 === 131072. Actual: ' + (1073741824 >>> 13));
+}
+
+
+if (2147483648 >>> 13 !== 262144) {
+ $ERROR('#448: 2147483648 >>> 13 === 262144. Actual: ' + (2147483648 >>> 13));
+}
+
+
+if (1 >>> 14 !== 0) {
+ $ERROR('#449: 1 >>> 14 === 0. Actual: ' + (1 >>> 14));
+}
+
+
+if (2 >>> 14 !== 0) {
+ $ERROR('#450: 2 >>> 14 === 0. Actual: ' + (2 >>> 14));
+}
+
+
+if (4 >>> 14 !== 0) {
+ $ERROR('#451: 4 >>> 14 === 0. Actual: ' + (4 >>> 14));
+}
+
+
+if (8 >>> 14 !== 0) {
+ $ERROR('#452: 8 >>> 14 === 0. Actual: ' + (8 >>> 14));
+}
+
+
+if (16 >>> 14 !== 0) {
+ $ERROR('#453: 16 >>> 14 === 0. Actual: ' + (16 >>> 14));
+}
+
+
+if (32 >>> 14 !== 0) {
+ $ERROR('#454: 32 >>> 14 === 0. Actual: ' + (32 >>> 14));
+}
+
+
+if (64 >>> 14 !== 0) {
+ $ERROR('#455: 64 >>> 14 === 0. Actual: ' + (64 >>> 14));
+}
+
+
+if (128 >>> 14 !== 0) {
+ $ERROR('#456: 128 >>> 14 === 0. Actual: ' + (128 >>> 14));
+}
+
+
+if (256 >>> 14 !== 0) {
+ $ERROR('#457: 256 >>> 14 === 0. Actual: ' + (256 >>> 14));
+}
+
+
+if (512 >>> 14 !== 0) {
+ $ERROR('#458: 512 >>> 14 === 0. Actual: ' + (512 >>> 14));
+}
+
+
+if (1024 >>> 14 !== 0) {
+ $ERROR('#459: 1024 >>> 14 === 0. Actual: ' + (1024 >>> 14));
+}
+
+
+if (2048 >>> 14 !== 0) {
+ $ERROR('#460: 2048 >>> 14 === 0. Actual: ' + (2048 >>> 14));
+}
+
+
+if (4096 >>> 14 !== 0) {
+ $ERROR('#461: 4096 >>> 14 === 0. Actual: ' + (4096 >>> 14));
+}
+
+
+if (8192 >>> 14 !== 0) {
+ $ERROR('#462: 8192 >>> 14 === 0. Actual: ' + (8192 >>> 14));
+}
+
+
+if (16384 >>> 14 !== 1) {
+ $ERROR('#463: 16384 >>> 14 === 1. Actual: ' + (16384 >>> 14));
+}
+
+
+if (32768 >>> 14 !== 2) {
+ $ERROR('#464: 32768 >>> 14 === 2. Actual: ' + (32768 >>> 14));
+}
+
+
+if (65536 >>> 14 !== 4) {
+ $ERROR('#465: 65536 >>> 14 === 4. Actual: ' + (65536 >>> 14));
+}
+
+
+if (131072 >>> 14 !== 8) {
+ $ERROR('#466: 131072 >>> 14 === 8. Actual: ' + (131072 >>> 14));
+}
+
+
+if (262144 >>> 14 !== 16) {
+ $ERROR('#467: 262144 >>> 14 === 16. Actual: ' + (262144 >>> 14));
+}
+
+
+if (524288 >>> 14 !== 32) {
+ $ERROR('#468: 524288 >>> 14 === 32. Actual: ' + (524288 >>> 14));
+}
+
+
+if (1048576 >>> 14 !== 64) {
+ $ERROR('#469: 1048576 >>> 14 === 64. Actual: ' + (1048576 >>> 14));
+}
+
+
+if (2097152 >>> 14 !== 128) {
+ $ERROR('#470: 2097152 >>> 14 === 128. Actual: ' + (2097152 >>> 14));
+}
+
+
+if (4194304 >>> 14 !== 256) {
+ $ERROR('#471: 4194304 >>> 14 === 256. Actual: ' + (4194304 >>> 14));
+}
+
+
+if (8388608 >>> 14 !== 512) {
+ $ERROR('#472: 8388608 >>> 14 === 512. Actual: ' + (8388608 >>> 14));
+}
+
+
+if (16777216 >>> 14 !== 1024) {
+ $ERROR('#473: 16777216 >>> 14 === 1024. Actual: ' + (16777216 >>> 14));
+}
+
+
+if (33554432 >>> 14 !== 2048) {
+ $ERROR('#474: 33554432 >>> 14 === 2048. Actual: ' + (33554432 >>> 14));
+}
+
+
+if (67108864 >>> 14 !== 4096) {
+ $ERROR('#475: 67108864 >>> 14 === 4096. Actual: ' + (67108864 >>> 14));
+}
+
+
+if (134217728 >>> 14 !== 8192) {
+ $ERROR('#476: 134217728 >>> 14 === 8192. Actual: ' + (134217728 >>> 14));
+}
+
+
+if (268435456 >>> 14 !== 16384) {
+ $ERROR('#477: 268435456 >>> 14 === 16384. Actual: ' + (268435456 >>> 14));
+}
+
+
+if (536870912 >>> 14 !== 32768) {
+ $ERROR('#478: 536870912 >>> 14 === 32768. Actual: ' + (536870912 >>> 14));
+}
+
+
+if (1073741824 >>> 14 !== 65536) {
+ $ERROR('#479: 1073741824 >>> 14 === 65536. Actual: ' + (1073741824 >>> 14));
+}
+
+
+if (2147483648 >>> 14 !== 131072) {
+ $ERROR('#480: 2147483648 >>> 14 === 131072. Actual: ' + (2147483648 >>> 14));
+}
+
+
+if (1 >>> 15 !== 0) {
+ $ERROR('#481: 1 >>> 15 === 0. Actual: ' + (1 >>> 15));
+}
+
+
+if (2 >>> 15 !== 0) {
+ $ERROR('#482: 2 >>> 15 === 0. Actual: ' + (2 >>> 15));
+}
+
+
+if (4 >>> 15 !== 0) {
+ $ERROR('#483: 4 >>> 15 === 0. Actual: ' + (4 >>> 15));
+}
+
+
+if (8 >>> 15 !== 0) {
+ $ERROR('#484: 8 >>> 15 === 0. Actual: ' + (8 >>> 15));
+}
+
+
+if (16 >>> 15 !== 0) {
+ $ERROR('#485: 16 >>> 15 === 0. Actual: ' + (16 >>> 15));
+}
+
+
+if (32 >>> 15 !== 0) {
+ $ERROR('#486: 32 >>> 15 === 0. Actual: ' + (32 >>> 15));
+}
+
+
+if (64 >>> 15 !== 0) {
+ $ERROR('#487: 64 >>> 15 === 0. Actual: ' + (64 >>> 15));
+}
+
+
+if (128 >>> 15 !== 0) {
+ $ERROR('#488: 128 >>> 15 === 0. Actual: ' + (128 >>> 15));
+}
+
+
+if (256 >>> 15 !== 0) {
+ $ERROR('#489: 256 >>> 15 === 0. Actual: ' + (256 >>> 15));
+}
+
+
+if (512 >>> 15 !== 0) {
+ $ERROR('#490: 512 >>> 15 === 0. Actual: ' + (512 >>> 15));
+}
+
+
+if (1024 >>> 15 !== 0) {
+ $ERROR('#491: 1024 >>> 15 === 0. Actual: ' + (1024 >>> 15));
+}
+
+
+if (2048 >>> 15 !== 0) {
+ $ERROR('#492: 2048 >>> 15 === 0. Actual: ' + (2048 >>> 15));
+}
+
+
+if (4096 >>> 15 !== 0) {
+ $ERROR('#493: 4096 >>> 15 === 0. Actual: ' + (4096 >>> 15));
+}
+
+
+if (8192 >>> 15 !== 0) {
+ $ERROR('#494: 8192 >>> 15 === 0. Actual: ' + (8192 >>> 15));
+}
+
+
+if (16384 >>> 15 !== 0) {
+ $ERROR('#495: 16384 >>> 15 === 0. Actual: ' + (16384 >>> 15));
+}
+
+
+if (32768 >>> 15 !== 1) {
+ $ERROR('#496: 32768 >>> 15 === 1. Actual: ' + (32768 >>> 15));
+}
+
+
+if (65536 >>> 15 !== 2) {
+ $ERROR('#497: 65536 >>> 15 === 2. Actual: ' + (65536 >>> 15));
+}
+
+
+if (131072 >>> 15 !== 4) {
+ $ERROR('#498: 131072 >>> 15 === 4. Actual: ' + (131072 >>> 15));
+}
+
+
+if (262144 >>> 15 !== 8) {
+ $ERROR('#499: 262144 >>> 15 === 8. Actual: ' + (262144 >>> 15));
+}
+
+
+if (524288 >>> 15 !== 16) {
+ $ERROR('#500: 524288 >>> 15 === 16. Actual: ' + (524288 >>> 15));
+}
+
+
+if (1048576 >>> 15 !== 32) {
+ $ERROR('#501: 1048576 >>> 15 === 32. Actual: ' + (1048576 >>> 15));
+}
+
+
+if (2097152 >>> 15 !== 64) {
+ $ERROR('#502: 2097152 >>> 15 === 64. Actual: ' + (2097152 >>> 15));
+}
+
+
+if (4194304 >>> 15 !== 128) {
+ $ERROR('#503: 4194304 >>> 15 === 128. Actual: ' + (4194304 >>> 15));
+}
+
+
+if (8388608 >>> 15 !== 256) {
+ $ERROR('#504: 8388608 >>> 15 === 256. Actual: ' + (8388608 >>> 15));
+}
+
+
+if (16777216 >>> 15 !== 512) {
+ $ERROR('#505: 16777216 >>> 15 === 512. Actual: ' + (16777216 >>> 15));
+}
+
+
+if (33554432 >>> 15 !== 1024) {
+ $ERROR('#506: 33554432 >>> 15 === 1024. Actual: ' + (33554432 >>> 15));
+}
+
+
+if (67108864 >>> 15 !== 2048) {
+ $ERROR('#507: 67108864 >>> 15 === 2048. Actual: ' + (67108864 >>> 15));
+}
+
+
+if (134217728 >>> 15 !== 4096) {
+ $ERROR('#508: 134217728 >>> 15 === 4096. Actual: ' + (134217728 >>> 15));
+}
+
+
+if (268435456 >>> 15 !== 8192) {
+ $ERROR('#509: 268435456 >>> 15 === 8192. Actual: ' + (268435456 >>> 15));
+}
+
+
+if (536870912 >>> 15 !== 16384) {
+ $ERROR('#510: 536870912 >>> 15 === 16384. Actual: ' + (536870912 >>> 15));
+}
+
+
+if (1073741824 >>> 15 !== 32768) {
+ $ERROR('#511: 1073741824 >>> 15 === 32768. Actual: ' + (1073741824 >>> 15));
+}
+
+
+if (2147483648 >>> 15 !== 65536) {
+ $ERROR('#512: 2147483648 >>> 15 === 65536. Actual: ' + (2147483648 >>> 15));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T2.js
new file mode 100644
index 000000000..4203c7d92
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T2.js
@@ -0,0 +1,2570 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A4_T2;
+ * @section: 11.7.3;
+ * @assertion: Check operator x >>> y in distinct points;
+ * @description: ShiftExpression = 2^n - 1, n = 16...31;
+ */
+
+//CHECK
+
+if (1 >>> 16 !== 0) {
+ $ERROR('#513: 1 >>> 16 === 0. Actual: ' + (1 >>> 16));
+}
+
+
+if (2 >>> 16 !== 0) {
+ $ERROR('#514: 2 >>> 16 === 0. Actual: ' + (2 >>> 16));
+}
+
+
+if (4 >>> 16 !== 0) {
+ $ERROR('#515: 4 >>> 16 === 0. Actual: ' + (4 >>> 16));
+}
+
+
+if (8 >>> 16 !== 0) {
+ $ERROR('#516: 8 >>> 16 === 0. Actual: ' + (8 >>> 16));
+}
+
+
+if (16 >>> 16 !== 0) {
+ $ERROR('#517: 16 >>> 16 === 0. Actual: ' + (16 >>> 16));
+}
+
+
+if (32 >>> 16 !== 0) {
+ $ERROR('#518: 32 >>> 16 === 0. Actual: ' + (32 >>> 16));
+}
+
+
+if (64 >>> 16 !== 0) {
+ $ERROR('#519: 64 >>> 16 === 0. Actual: ' + (64 >>> 16));
+}
+
+
+if (128 >>> 16 !== 0) {
+ $ERROR('#520: 128 >>> 16 === 0. Actual: ' + (128 >>> 16));
+}
+
+
+if (256 >>> 16 !== 0) {
+ $ERROR('#521: 256 >>> 16 === 0. Actual: ' + (256 >>> 16));
+}
+
+
+if (512 >>> 16 !== 0) {
+ $ERROR('#522: 512 >>> 16 === 0. Actual: ' + (512 >>> 16));
+}
+
+
+if (1024 >>> 16 !== 0) {
+ $ERROR('#523: 1024 >>> 16 === 0. Actual: ' + (1024 >>> 16));
+}
+
+
+if (2048 >>> 16 !== 0) {
+ $ERROR('#524: 2048 >>> 16 === 0. Actual: ' + (2048 >>> 16));
+}
+
+
+if (4096 >>> 16 !== 0) {
+ $ERROR('#525: 4096 >>> 16 === 0. Actual: ' + (4096 >>> 16));
+}
+
+
+if (8192 >>> 16 !== 0) {
+ $ERROR('#526: 8192 >>> 16 === 0. Actual: ' + (8192 >>> 16));
+}
+
+
+if (16384 >>> 16 !== 0) {
+ $ERROR('#527: 16384 >>> 16 === 0. Actual: ' + (16384 >>> 16));
+}
+
+
+if (32768 >>> 16 !== 0) {
+ $ERROR('#528: 32768 >>> 16 === 0. Actual: ' + (32768 >>> 16));
+}
+
+
+if (65536 >>> 16 !== 1) {
+ $ERROR('#529: 65536 >>> 16 === 1. Actual: ' + (65536 >>> 16));
+}
+
+
+if (131072 >>> 16 !== 2) {
+ $ERROR('#530: 131072 >>> 16 === 2. Actual: ' + (131072 >>> 16));
+}
+
+
+if (262144 >>> 16 !== 4) {
+ $ERROR('#531: 262144 >>> 16 === 4. Actual: ' + (262144 >>> 16));
+}
+
+
+if (524288 >>> 16 !== 8) {
+ $ERROR('#532: 524288 >>> 16 === 8. Actual: ' + (524288 >>> 16));
+}
+
+
+if (1048576 >>> 16 !== 16) {
+ $ERROR('#533: 1048576 >>> 16 === 16. Actual: ' + (1048576 >>> 16));
+}
+
+
+if (2097152 >>> 16 !== 32) {
+ $ERROR('#534: 2097152 >>> 16 === 32. Actual: ' + (2097152 >>> 16));
+}
+
+
+if (4194304 >>> 16 !== 64) {
+ $ERROR('#535: 4194304 >>> 16 === 64. Actual: ' + (4194304 >>> 16));
+}
+
+
+if (8388608 >>> 16 !== 128) {
+ $ERROR('#536: 8388608 >>> 16 === 128. Actual: ' + (8388608 >>> 16));
+}
+
+
+if (16777216 >>> 16 !== 256) {
+ $ERROR('#537: 16777216 >>> 16 === 256. Actual: ' + (16777216 >>> 16));
+}
+
+
+if (33554432 >>> 16 !== 512) {
+ $ERROR('#538: 33554432 >>> 16 === 512. Actual: ' + (33554432 >>> 16));
+}
+
+
+if (67108864 >>> 16 !== 1024) {
+ $ERROR('#539: 67108864 >>> 16 === 1024. Actual: ' + (67108864 >>> 16));
+}
+
+
+if (134217728 >>> 16 !== 2048) {
+ $ERROR('#540: 134217728 >>> 16 === 2048. Actual: ' + (134217728 >>> 16));
+}
+
+
+if (268435456 >>> 16 !== 4096) {
+ $ERROR('#541: 268435456 >>> 16 === 4096. Actual: ' + (268435456 >>> 16));
+}
+
+
+if (536870912 >>> 16 !== 8192) {
+ $ERROR('#542: 536870912 >>> 16 === 8192. Actual: ' + (536870912 >>> 16));
+}
+
+
+if (1073741824 >>> 16 !== 16384) {
+ $ERROR('#543: 1073741824 >>> 16 === 16384. Actual: ' + (1073741824 >>> 16));
+}
+
+
+if (2147483648 >>> 16 !== 32768) {
+ $ERROR('#544: 2147483648 >>> 16 === 32768. Actual: ' + (2147483648 >>> 16));
+}
+
+
+if (1 >>> 17 !== 0) {
+ $ERROR('#545: 1 >>> 17 === 0. Actual: ' + (1 >>> 17));
+}
+
+
+if (2 >>> 17 !== 0) {
+ $ERROR('#546: 2 >>> 17 === 0. Actual: ' + (2 >>> 17));
+}
+
+
+if (4 >>> 17 !== 0) {
+ $ERROR('#547: 4 >>> 17 === 0. Actual: ' + (4 >>> 17));
+}
+
+
+if (8 >>> 17 !== 0) {
+ $ERROR('#548: 8 >>> 17 === 0. Actual: ' + (8 >>> 17));
+}
+
+
+if (16 >>> 17 !== 0) {
+ $ERROR('#549: 16 >>> 17 === 0. Actual: ' + (16 >>> 17));
+}
+
+
+if (32 >>> 17 !== 0) {
+ $ERROR('#550: 32 >>> 17 === 0. Actual: ' + (32 >>> 17));
+}
+
+
+if (64 >>> 17 !== 0) {
+ $ERROR('#551: 64 >>> 17 === 0. Actual: ' + (64 >>> 17));
+}
+
+
+if (128 >>> 17 !== 0) {
+ $ERROR('#552: 128 >>> 17 === 0. Actual: ' + (128 >>> 17));
+}
+
+
+if (256 >>> 17 !== 0) {
+ $ERROR('#553: 256 >>> 17 === 0. Actual: ' + (256 >>> 17));
+}
+
+
+if (512 >>> 17 !== 0) {
+ $ERROR('#554: 512 >>> 17 === 0. Actual: ' + (512 >>> 17));
+}
+
+
+if (1024 >>> 17 !== 0) {
+ $ERROR('#555: 1024 >>> 17 === 0. Actual: ' + (1024 >>> 17));
+}
+
+
+if (2048 >>> 17 !== 0) {
+ $ERROR('#556: 2048 >>> 17 === 0. Actual: ' + (2048 >>> 17));
+}
+
+
+if (4096 >>> 17 !== 0) {
+ $ERROR('#557: 4096 >>> 17 === 0. Actual: ' + (4096 >>> 17));
+}
+
+
+if (8192 >>> 17 !== 0) {
+ $ERROR('#558: 8192 >>> 17 === 0. Actual: ' + (8192 >>> 17));
+}
+
+
+if (16384 >>> 17 !== 0) {
+ $ERROR('#559: 16384 >>> 17 === 0. Actual: ' + (16384 >>> 17));
+}
+
+
+if (32768 >>> 17 !== 0) {
+ $ERROR('#560: 32768 >>> 17 === 0. Actual: ' + (32768 >>> 17));
+}
+
+
+if (65536 >>> 17 !== 0) {
+ $ERROR('#561: 65536 >>> 17 === 0. Actual: ' + (65536 >>> 17));
+}
+
+
+if (131072 >>> 17 !== 1) {
+ $ERROR('#562: 131072 >>> 17 === 1. Actual: ' + (131072 >>> 17));
+}
+
+
+if (262144 >>> 17 !== 2) {
+ $ERROR('#563: 262144 >>> 17 === 2. Actual: ' + (262144 >>> 17));
+}
+
+
+if (524288 >>> 17 !== 4) {
+ $ERROR('#564: 524288 >>> 17 === 4. Actual: ' + (524288 >>> 17));
+}
+
+
+if (1048576 >>> 17 !== 8) {
+ $ERROR('#565: 1048576 >>> 17 === 8. Actual: ' + (1048576 >>> 17));
+}
+
+
+if (2097152 >>> 17 !== 16) {
+ $ERROR('#566: 2097152 >>> 17 === 16. Actual: ' + (2097152 >>> 17));
+}
+
+
+if (4194304 >>> 17 !== 32) {
+ $ERROR('#567: 4194304 >>> 17 === 32. Actual: ' + (4194304 >>> 17));
+}
+
+
+if (8388608 >>> 17 !== 64) {
+ $ERROR('#568: 8388608 >>> 17 === 64. Actual: ' + (8388608 >>> 17));
+}
+
+
+if (16777216 >>> 17 !== 128) {
+ $ERROR('#569: 16777216 >>> 17 === 128. Actual: ' + (16777216 >>> 17));
+}
+
+
+if (33554432 >>> 17 !== 256) {
+ $ERROR('#570: 33554432 >>> 17 === 256. Actual: ' + (33554432 >>> 17));
+}
+
+
+if (67108864 >>> 17 !== 512) {
+ $ERROR('#571: 67108864 >>> 17 === 512. Actual: ' + (67108864 >>> 17));
+}
+
+
+if (134217728 >>> 17 !== 1024) {
+ $ERROR('#572: 134217728 >>> 17 === 1024. Actual: ' + (134217728 >>> 17));
+}
+
+
+if (268435456 >>> 17 !== 2048) {
+ $ERROR('#573: 268435456 >>> 17 === 2048. Actual: ' + (268435456 >>> 17));
+}
+
+
+if (536870912 >>> 17 !== 4096) {
+ $ERROR('#574: 536870912 >>> 17 === 4096. Actual: ' + (536870912 >>> 17));
+}
+
+
+if (1073741824 >>> 17 !== 8192) {
+ $ERROR('#575: 1073741824 >>> 17 === 8192. Actual: ' + (1073741824 >>> 17));
+}
+
+
+if (2147483648 >>> 17 !== 16384) {
+ $ERROR('#576: 2147483648 >>> 17 === 16384. Actual: ' + (2147483648 >>> 17));
+}
+
+
+if (1 >>> 18 !== 0) {
+ $ERROR('#577: 1 >>> 18 === 0. Actual: ' + (1 >>> 18));
+}
+
+
+if (2 >>> 18 !== 0) {
+ $ERROR('#578: 2 >>> 18 === 0. Actual: ' + (2 >>> 18));
+}
+
+
+if (4 >>> 18 !== 0) {
+ $ERROR('#579: 4 >>> 18 === 0. Actual: ' + (4 >>> 18));
+}
+
+
+if (8 >>> 18 !== 0) {
+ $ERROR('#580: 8 >>> 18 === 0. Actual: ' + (8 >>> 18));
+}
+
+
+if (16 >>> 18 !== 0) {
+ $ERROR('#581: 16 >>> 18 === 0. Actual: ' + (16 >>> 18));
+}
+
+
+if (32 >>> 18 !== 0) {
+ $ERROR('#582: 32 >>> 18 === 0. Actual: ' + (32 >>> 18));
+}
+
+
+if (64 >>> 18 !== 0) {
+ $ERROR('#583: 64 >>> 18 === 0. Actual: ' + (64 >>> 18));
+}
+
+
+if (128 >>> 18 !== 0) {
+ $ERROR('#584: 128 >>> 18 === 0. Actual: ' + (128 >>> 18));
+}
+
+
+if (256 >>> 18 !== 0) {
+ $ERROR('#585: 256 >>> 18 === 0. Actual: ' + (256 >>> 18));
+}
+
+
+if (512 >>> 18 !== 0) {
+ $ERROR('#586: 512 >>> 18 === 0. Actual: ' + (512 >>> 18));
+}
+
+
+if (1024 >>> 18 !== 0) {
+ $ERROR('#587: 1024 >>> 18 === 0. Actual: ' + (1024 >>> 18));
+}
+
+
+if (2048 >>> 18 !== 0) {
+ $ERROR('#588: 2048 >>> 18 === 0. Actual: ' + (2048 >>> 18));
+}
+
+
+if (4096 >>> 18 !== 0) {
+ $ERROR('#589: 4096 >>> 18 === 0. Actual: ' + (4096 >>> 18));
+}
+
+
+if (8192 >>> 18 !== 0) {
+ $ERROR('#590: 8192 >>> 18 === 0. Actual: ' + (8192 >>> 18));
+}
+
+
+if (16384 >>> 18 !== 0) {
+ $ERROR('#591: 16384 >>> 18 === 0. Actual: ' + (16384 >>> 18));
+}
+
+
+if (32768 >>> 18 !== 0) {
+ $ERROR('#592: 32768 >>> 18 === 0. Actual: ' + (32768 >>> 18));
+}
+
+
+if (65536 >>> 18 !== 0) {
+ $ERROR('#593: 65536 >>> 18 === 0. Actual: ' + (65536 >>> 18));
+}
+
+
+if (131072 >>> 18 !== 0) {
+ $ERROR('#594: 131072 >>> 18 === 0. Actual: ' + (131072 >>> 18));
+}
+
+
+if (262144 >>> 18 !== 1) {
+ $ERROR('#595: 262144 >>> 18 === 1. Actual: ' + (262144 >>> 18));
+}
+
+
+if (524288 >>> 18 !== 2) {
+ $ERROR('#596: 524288 >>> 18 === 2. Actual: ' + (524288 >>> 18));
+}
+
+
+if (1048576 >>> 18 !== 4) {
+ $ERROR('#597: 1048576 >>> 18 === 4. Actual: ' + (1048576 >>> 18));
+}
+
+
+if (2097152 >>> 18 !== 8) {
+ $ERROR('#598: 2097152 >>> 18 === 8. Actual: ' + (2097152 >>> 18));
+}
+
+
+if (4194304 >>> 18 !== 16) {
+ $ERROR('#599: 4194304 >>> 18 === 16. Actual: ' + (4194304 >>> 18));
+}
+
+
+if (8388608 >>> 18 !== 32) {
+ $ERROR('#600: 8388608 >>> 18 === 32. Actual: ' + (8388608 >>> 18));
+}
+
+
+if (16777216 >>> 18 !== 64) {
+ $ERROR('#601: 16777216 >>> 18 === 64. Actual: ' + (16777216 >>> 18));
+}
+
+
+if (33554432 >>> 18 !== 128) {
+ $ERROR('#602: 33554432 >>> 18 === 128. Actual: ' + (33554432 >>> 18));
+}
+
+
+if (67108864 >>> 18 !== 256) {
+ $ERROR('#603: 67108864 >>> 18 === 256. Actual: ' + (67108864 >>> 18));
+}
+
+
+if (134217728 >>> 18 !== 512) {
+ $ERROR('#604: 134217728 >>> 18 === 512. Actual: ' + (134217728 >>> 18));
+}
+
+
+if (268435456 >>> 18 !== 1024) {
+ $ERROR('#605: 268435456 >>> 18 === 1024. Actual: ' + (268435456 >>> 18));
+}
+
+
+if (536870912 >>> 18 !== 2048) {
+ $ERROR('#606: 536870912 >>> 18 === 2048. Actual: ' + (536870912 >>> 18));
+}
+
+
+if (1073741824 >>> 18 !== 4096) {
+ $ERROR('#607: 1073741824 >>> 18 === 4096. Actual: ' + (1073741824 >>> 18));
+}
+
+
+if (2147483648 >>> 18 !== 8192) {
+ $ERROR('#608: 2147483648 >>> 18 === 8192. Actual: ' + (2147483648 >>> 18));
+}
+
+
+if (1 >>> 19 !== 0) {
+ $ERROR('#609: 1 >>> 19 === 0. Actual: ' + (1 >>> 19));
+}
+
+
+if (2 >>> 19 !== 0) {
+ $ERROR('#610: 2 >>> 19 === 0. Actual: ' + (2 >>> 19));
+}
+
+
+if (4 >>> 19 !== 0) {
+ $ERROR('#611: 4 >>> 19 === 0. Actual: ' + (4 >>> 19));
+}
+
+
+if (8 >>> 19 !== 0) {
+ $ERROR('#612: 8 >>> 19 === 0. Actual: ' + (8 >>> 19));
+}
+
+
+if (16 >>> 19 !== 0) {
+ $ERROR('#613: 16 >>> 19 === 0. Actual: ' + (16 >>> 19));
+}
+
+
+if (32 >>> 19 !== 0) {
+ $ERROR('#614: 32 >>> 19 === 0. Actual: ' + (32 >>> 19));
+}
+
+
+if (64 >>> 19 !== 0) {
+ $ERROR('#615: 64 >>> 19 === 0. Actual: ' + (64 >>> 19));
+}
+
+
+if (128 >>> 19 !== 0) {
+ $ERROR('#616: 128 >>> 19 === 0. Actual: ' + (128 >>> 19));
+}
+
+
+if (256 >>> 19 !== 0) {
+ $ERROR('#617: 256 >>> 19 === 0. Actual: ' + (256 >>> 19));
+}
+
+
+if (512 >>> 19 !== 0) {
+ $ERROR('#618: 512 >>> 19 === 0. Actual: ' + (512 >>> 19));
+}
+
+
+if (1024 >>> 19 !== 0) {
+ $ERROR('#619: 1024 >>> 19 === 0. Actual: ' + (1024 >>> 19));
+}
+
+
+if (2048 >>> 19 !== 0) {
+ $ERROR('#620: 2048 >>> 19 === 0. Actual: ' + (2048 >>> 19));
+}
+
+
+if (4096 >>> 19 !== 0) {
+ $ERROR('#621: 4096 >>> 19 === 0. Actual: ' + (4096 >>> 19));
+}
+
+
+if (8192 >>> 19 !== 0) {
+ $ERROR('#622: 8192 >>> 19 === 0. Actual: ' + (8192 >>> 19));
+}
+
+
+if (16384 >>> 19 !== 0) {
+ $ERROR('#623: 16384 >>> 19 === 0. Actual: ' + (16384 >>> 19));
+}
+
+
+if (32768 >>> 19 !== 0) {
+ $ERROR('#624: 32768 >>> 19 === 0. Actual: ' + (32768 >>> 19));
+}
+
+
+if (65536 >>> 19 !== 0) {
+ $ERROR('#625: 65536 >>> 19 === 0. Actual: ' + (65536 >>> 19));
+}
+
+
+if (131072 >>> 19 !== 0) {
+ $ERROR('#626: 131072 >>> 19 === 0. Actual: ' + (131072 >>> 19));
+}
+
+
+if (262144 >>> 19 !== 0) {
+ $ERROR('#627: 262144 >>> 19 === 0. Actual: ' + (262144 >>> 19));
+}
+
+
+if (524288 >>> 19 !== 1) {
+ $ERROR('#628: 524288 >>> 19 === 1. Actual: ' + (524288 >>> 19));
+}
+
+
+if (1048576 >>> 19 !== 2) {
+ $ERROR('#629: 1048576 >>> 19 === 2. Actual: ' + (1048576 >>> 19));
+}
+
+
+if (2097152 >>> 19 !== 4) {
+ $ERROR('#630: 2097152 >>> 19 === 4. Actual: ' + (2097152 >>> 19));
+}
+
+
+if (4194304 >>> 19 !== 8) {
+ $ERROR('#631: 4194304 >>> 19 === 8. Actual: ' + (4194304 >>> 19));
+}
+
+
+if (8388608 >>> 19 !== 16) {
+ $ERROR('#632: 8388608 >>> 19 === 16. Actual: ' + (8388608 >>> 19));
+}
+
+
+if (16777216 >>> 19 !== 32) {
+ $ERROR('#633: 16777216 >>> 19 === 32. Actual: ' + (16777216 >>> 19));
+}
+
+
+if (33554432 >>> 19 !== 64) {
+ $ERROR('#634: 33554432 >>> 19 === 64. Actual: ' + (33554432 >>> 19));
+}
+
+
+if (67108864 >>> 19 !== 128) {
+ $ERROR('#635: 67108864 >>> 19 === 128. Actual: ' + (67108864 >>> 19));
+}
+
+
+if (134217728 >>> 19 !== 256) {
+ $ERROR('#636: 134217728 >>> 19 === 256. Actual: ' + (134217728 >>> 19));
+}
+
+
+if (268435456 >>> 19 !== 512) {
+ $ERROR('#637: 268435456 >>> 19 === 512. Actual: ' + (268435456 >>> 19));
+}
+
+
+if (536870912 >>> 19 !== 1024) {
+ $ERROR('#638: 536870912 >>> 19 === 1024. Actual: ' + (536870912 >>> 19));
+}
+
+
+if (1073741824 >>> 19 !== 2048) {
+ $ERROR('#639: 1073741824 >>> 19 === 2048. Actual: ' + (1073741824 >>> 19));
+}
+
+
+if (2147483648 >>> 19 !== 4096) {
+ $ERROR('#640: 2147483648 >>> 19 === 4096. Actual: ' + (2147483648 >>> 19));
+}
+
+
+if (1 >>> 20 !== 0) {
+ $ERROR('#641: 1 >>> 20 === 0. Actual: ' + (1 >>> 20));
+}
+
+
+if (2 >>> 20 !== 0) {
+ $ERROR('#642: 2 >>> 20 === 0. Actual: ' + (2 >>> 20));
+}
+
+
+if (4 >>> 20 !== 0) {
+ $ERROR('#643: 4 >>> 20 === 0. Actual: ' + (4 >>> 20));
+}
+
+
+if (8 >>> 20 !== 0) {
+ $ERROR('#644: 8 >>> 20 === 0. Actual: ' + (8 >>> 20));
+}
+
+
+if (16 >>> 20 !== 0) {
+ $ERROR('#645: 16 >>> 20 === 0. Actual: ' + (16 >>> 20));
+}
+
+
+if (32 >>> 20 !== 0) {
+ $ERROR('#646: 32 >>> 20 === 0. Actual: ' + (32 >>> 20));
+}
+
+
+if (64 >>> 20 !== 0) {
+ $ERROR('#647: 64 >>> 20 === 0. Actual: ' + (64 >>> 20));
+}
+
+
+if (128 >>> 20 !== 0) {
+ $ERROR('#648: 128 >>> 20 === 0. Actual: ' + (128 >>> 20));
+}
+
+
+if (256 >>> 20 !== 0) {
+ $ERROR('#649: 256 >>> 20 === 0. Actual: ' + (256 >>> 20));
+}
+
+
+if (512 >>> 20 !== 0) {
+ $ERROR('#650: 512 >>> 20 === 0. Actual: ' + (512 >>> 20));
+}
+
+
+if (1024 >>> 20 !== 0) {
+ $ERROR('#651: 1024 >>> 20 === 0. Actual: ' + (1024 >>> 20));
+}
+
+
+if (2048 >>> 20 !== 0) {
+ $ERROR('#652: 2048 >>> 20 === 0. Actual: ' + (2048 >>> 20));
+}
+
+
+if (4096 >>> 20 !== 0) {
+ $ERROR('#653: 4096 >>> 20 === 0. Actual: ' + (4096 >>> 20));
+}
+
+
+if (8192 >>> 20 !== 0) {
+ $ERROR('#654: 8192 >>> 20 === 0. Actual: ' + (8192 >>> 20));
+}
+
+
+if (16384 >>> 20 !== 0) {
+ $ERROR('#655: 16384 >>> 20 === 0. Actual: ' + (16384 >>> 20));
+}
+
+
+if (32768 >>> 20 !== 0) {
+ $ERROR('#656: 32768 >>> 20 === 0. Actual: ' + (32768 >>> 20));
+}
+
+
+if (65536 >>> 20 !== 0) {
+ $ERROR('#657: 65536 >>> 20 === 0. Actual: ' + (65536 >>> 20));
+}
+
+
+if (131072 >>> 20 !== 0) {
+ $ERROR('#658: 131072 >>> 20 === 0. Actual: ' + (131072 >>> 20));
+}
+
+
+if (262144 >>> 20 !== 0) {
+ $ERROR('#659: 262144 >>> 20 === 0. Actual: ' + (262144 >>> 20));
+}
+
+
+if (524288 >>> 20 !== 0) {
+ $ERROR('#660: 524288 >>> 20 === 0. Actual: ' + (524288 >>> 20));
+}
+
+
+if (1048576 >>> 20 !== 1) {
+ $ERROR('#661: 1048576 >>> 20 === 1. Actual: ' + (1048576 >>> 20));
+}
+
+
+if (2097152 >>> 20 !== 2) {
+ $ERROR('#662: 2097152 >>> 20 === 2. Actual: ' + (2097152 >>> 20));
+}
+
+
+if (4194304 >>> 20 !== 4) {
+ $ERROR('#663: 4194304 >>> 20 === 4. Actual: ' + (4194304 >>> 20));
+}
+
+
+if (8388608 >>> 20 !== 8) {
+ $ERROR('#664: 8388608 >>> 20 === 8. Actual: ' + (8388608 >>> 20));
+}
+
+
+if (16777216 >>> 20 !== 16) {
+ $ERROR('#665: 16777216 >>> 20 === 16. Actual: ' + (16777216 >>> 20));
+}
+
+
+if (33554432 >>> 20 !== 32) {
+ $ERROR('#666: 33554432 >>> 20 === 32. Actual: ' + (33554432 >>> 20));
+}
+
+
+if (67108864 >>> 20 !== 64) {
+ $ERROR('#667: 67108864 >>> 20 === 64. Actual: ' + (67108864 >>> 20));
+}
+
+
+if (134217728 >>> 20 !== 128) {
+ $ERROR('#668: 134217728 >>> 20 === 128. Actual: ' + (134217728 >>> 20));
+}
+
+
+if (268435456 >>> 20 !== 256) {
+ $ERROR('#669: 268435456 >>> 20 === 256. Actual: ' + (268435456 >>> 20));
+}
+
+
+if (536870912 >>> 20 !== 512) {
+ $ERROR('#670: 536870912 >>> 20 === 512. Actual: ' + (536870912 >>> 20));
+}
+
+
+if (1073741824 >>> 20 !== 1024) {
+ $ERROR('#671: 1073741824 >>> 20 === 1024. Actual: ' + (1073741824 >>> 20));
+}
+
+
+if (2147483648 >>> 20 !== 2048) {
+ $ERROR('#672: 2147483648 >>> 20 === 2048. Actual: ' + (2147483648 >>> 20));
+}
+
+
+if (1 >>> 21 !== 0) {
+ $ERROR('#673: 1 >>> 21 === 0. Actual: ' + (1 >>> 21));
+}
+
+
+if (2 >>> 21 !== 0) {
+ $ERROR('#674: 2 >>> 21 === 0. Actual: ' + (2 >>> 21));
+}
+
+
+if (4 >>> 21 !== 0) {
+ $ERROR('#675: 4 >>> 21 === 0. Actual: ' + (4 >>> 21));
+}
+
+
+if (8 >>> 21 !== 0) {
+ $ERROR('#676: 8 >>> 21 === 0. Actual: ' + (8 >>> 21));
+}
+
+
+if (16 >>> 21 !== 0) {
+ $ERROR('#677: 16 >>> 21 === 0. Actual: ' + (16 >>> 21));
+}
+
+
+if (32 >>> 21 !== 0) {
+ $ERROR('#678: 32 >>> 21 === 0. Actual: ' + (32 >>> 21));
+}
+
+
+if (64 >>> 21 !== 0) {
+ $ERROR('#679: 64 >>> 21 === 0. Actual: ' + (64 >>> 21));
+}
+
+
+if (128 >>> 21 !== 0) {
+ $ERROR('#680: 128 >>> 21 === 0. Actual: ' + (128 >>> 21));
+}
+
+
+if (256 >>> 21 !== 0) {
+ $ERROR('#681: 256 >>> 21 === 0. Actual: ' + (256 >>> 21));
+}
+
+
+if (512 >>> 21 !== 0) {
+ $ERROR('#682: 512 >>> 21 === 0. Actual: ' + (512 >>> 21));
+}
+
+
+if (1024 >>> 21 !== 0) {
+ $ERROR('#683: 1024 >>> 21 === 0. Actual: ' + (1024 >>> 21));
+}
+
+
+if (2048 >>> 21 !== 0) {
+ $ERROR('#684: 2048 >>> 21 === 0. Actual: ' + (2048 >>> 21));
+}
+
+
+if (4096 >>> 21 !== 0) {
+ $ERROR('#685: 4096 >>> 21 === 0. Actual: ' + (4096 >>> 21));
+}
+
+
+if (8192 >>> 21 !== 0) {
+ $ERROR('#686: 8192 >>> 21 === 0. Actual: ' + (8192 >>> 21));
+}
+
+
+if (16384 >>> 21 !== 0) {
+ $ERROR('#687: 16384 >>> 21 === 0. Actual: ' + (16384 >>> 21));
+}
+
+
+if (32768 >>> 21 !== 0) {
+ $ERROR('#688: 32768 >>> 21 === 0. Actual: ' + (32768 >>> 21));
+}
+
+
+if (65536 >>> 21 !== 0) {
+ $ERROR('#689: 65536 >>> 21 === 0. Actual: ' + (65536 >>> 21));
+}
+
+
+if (131072 >>> 21 !== 0) {
+ $ERROR('#690: 131072 >>> 21 === 0. Actual: ' + (131072 >>> 21));
+}
+
+
+if (262144 >>> 21 !== 0) {
+ $ERROR('#691: 262144 >>> 21 === 0. Actual: ' + (262144 >>> 21));
+}
+
+
+if (524288 >>> 21 !== 0) {
+ $ERROR('#692: 524288 >>> 21 === 0. Actual: ' + (524288 >>> 21));
+}
+
+
+if (1048576 >>> 21 !== 0) {
+ $ERROR('#693: 1048576 >>> 21 === 0. Actual: ' + (1048576 >>> 21));
+}
+
+
+if (2097152 >>> 21 !== 1) {
+ $ERROR('#694: 2097152 >>> 21 === 1. Actual: ' + (2097152 >>> 21));
+}
+
+
+if (4194304 >>> 21 !== 2) {
+ $ERROR('#695: 4194304 >>> 21 === 2. Actual: ' + (4194304 >>> 21));
+}
+
+
+if (8388608 >>> 21 !== 4) {
+ $ERROR('#696: 8388608 >>> 21 === 4. Actual: ' + (8388608 >>> 21));
+}
+
+
+if (16777216 >>> 21 !== 8) {
+ $ERROR('#697: 16777216 >>> 21 === 8. Actual: ' + (16777216 >>> 21));
+}
+
+
+if (33554432 >>> 21 !== 16) {
+ $ERROR('#698: 33554432 >>> 21 === 16. Actual: ' + (33554432 >>> 21));
+}
+
+
+if (67108864 >>> 21 !== 32) {
+ $ERROR('#699: 67108864 >>> 21 === 32. Actual: ' + (67108864 >>> 21));
+}
+
+
+if (134217728 >>> 21 !== 64) {
+ $ERROR('#700: 134217728 >>> 21 === 64. Actual: ' + (134217728 >>> 21));
+}
+
+
+if (268435456 >>> 21 !== 128) {
+ $ERROR('#701: 268435456 >>> 21 === 128. Actual: ' + (268435456 >>> 21));
+}
+
+
+if (536870912 >>> 21 !== 256) {
+ $ERROR('#702: 536870912 >>> 21 === 256. Actual: ' + (536870912 >>> 21));
+}
+
+
+if (1073741824 >>> 21 !== 512) {
+ $ERROR('#703: 1073741824 >>> 21 === 512. Actual: ' + (1073741824 >>> 21));
+}
+
+
+if (2147483648 >>> 21 !== 1024) {
+ $ERROR('#704: 2147483648 >>> 21 === 1024. Actual: ' + (2147483648 >>> 21));
+}
+
+
+if (1 >>> 22 !== 0) {
+ $ERROR('#705: 1 >>> 22 === 0. Actual: ' + (1 >>> 22));
+}
+
+
+if (2 >>> 22 !== 0) {
+ $ERROR('#706: 2 >>> 22 === 0. Actual: ' + (2 >>> 22));
+}
+
+
+if (4 >>> 22 !== 0) {
+ $ERROR('#707: 4 >>> 22 === 0. Actual: ' + (4 >>> 22));
+}
+
+
+if (8 >>> 22 !== 0) {
+ $ERROR('#708: 8 >>> 22 === 0. Actual: ' + (8 >>> 22));
+}
+
+
+if (16 >>> 22 !== 0) {
+ $ERROR('#709: 16 >>> 22 === 0. Actual: ' + (16 >>> 22));
+}
+
+
+if (32 >>> 22 !== 0) {
+ $ERROR('#710: 32 >>> 22 === 0. Actual: ' + (32 >>> 22));
+}
+
+
+if (64 >>> 22 !== 0) {
+ $ERROR('#711: 64 >>> 22 === 0. Actual: ' + (64 >>> 22));
+}
+
+
+if (128 >>> 22 !== 0) {
+ $ERROR('#712: 128 >>> 22 === 0. Actual: ' + (128 >>> 22));
+}
+
+
+if (256 >>> 22 !== 0) {
+ $ERROR('#713: 256 >>> 22 === 0. Actual: ' + (256 >>> 22));
+}
+
+
+if (512 >>> 22 !== 0) {
+ $ERROR('#714: 512 >>> 22 === 0. Actual: ' + (512 >>> 22));
+}
+
+
+if (1024 >>> 22 !== 0) {
+ $ERROR('#715: 1024 >>> 22 === 0. Actual: ' + (1024 >>> 22));
+}
+
+
+if (2048 >>> 22 !== 0) {
+ $ERROR('#716: 2048 >>> 22 === 0. Actual: ' + (2048 >>> 22));
+}
+
+
+if (4096 >>> 22 !== 0) {
+ $ERROR('#717: 4096 >>> 22 === 0. Actual: ' + (4096 >>> 22));
+}
+
+
+if (8192 >>> 22 !== 0) {
+ $ERROR('#718: 8192 >>> 22 === 0. Actual: ' + (8192 >>> 22));
+}
+
+
+if (16384 >>> 22 !== 0) {
+ $ERROR('#719: 16384 >>> 22 === 0. Actual: ' + (16384 >>> 22));
+}
+
+
+if (32768 >>> 22 !== 0) {
+ $ERROR('#720: 32768 >>> 22 === 0. Actual: ' + (32768 >>> 22));
+}
+
+
+if (65536 >>> 22 !== 0) {
+ $ERROR('#721: 65536 >>> 22 === 0. Actual: ' + (65536 >>> 22));
+}
+
+
+if (131072 >>> 22 !== 0) {
+ $ERROR('#722: 131072 >>> 22 === 0. Actual: ' + (131072 >>> 22));
+}
+
+
+if (262144 >>> 22 !== 0) {
+ $ERROR('#723: 262144 >>> 22 === 0. Actual: ' + (262144 >>> 22));
+}
+
+
+if (524288 >>> 22 !== 0) {
+ $ERROR('#724: 524288 >>> 22 === 0. Actual: ' + (524288 >>> 22));
+}
+
+
+if (1048576 >>> 22 !== 0) {
+ $ERROR('#725: 1048576 >>> 22 === 0. Actual: ' + (1048576 >>> 22));
+}
+
+
+if (2097152 >>> 22 !== 0) {
+ $ERROR('#726: 2097152 >>> 22 === 0. Actual: ' + (2097152 >>> 22));
+}
+
+
+if (4194304 >>> 22 !== 1) {
+ $ERROR('#727: 4194304 >>> 22 === 1. Actual: ' + (4194304 >>> 22));
+}
+
+
+if (8388608 >>> 22 !== 2) {
+ $ERROR('#728: 8388608 >>> 22 === 2. Actual: ' + (8388608 >>> 22));
+}
+
+
+if (16777216 >>> 22 !== 4) {
+ $ERROR('#729: 16777216 >>> 22 === 4. Actual: ' + (16777216 >>> 22));
+}
+
+
+if (33554432 >>> 22 !== 8) {
+ $ERROR('#730: 33554432 >>> 22 === 8. Actual: ' + (33554432 >>> 22));
+}
+
+
+if (67108864 >>> 22 !== 16) {
+ $ERROR('#731: 67108864 >>> 22 === 16. Actual: ' + (67108864 >>> 22));
+}
+
+
+if (134217728 >>> 22 !== 32) {
+ $ERROR('#732: 134217728 >>> 22 === 32. Actual: ' + (134217728 >>> 22));
+}
+
+
+if (268435456 >>> 22 !== 64) {
+ $ERROR('#733: 268435456 >>> 22 === 64. Actual: ' + (268435456 >>> 22));
+}
+
+
+if (536870912 >>> 22 !== 128) {
+ $ERROR('#734: 536870912 >>> 22 === 128. Actual: ' + (536870912 >>> 22));
+}
+
+
+if (1073741824 >>> 22 !== 256) {
+ $ERROR('#735: 1073741824 >>> 22 === 256. Actual: ' + (1073741824 >>> 22));
+}
+
+
+if (2147483648 >>> 22 !== 512) {
+ $ERROR('#736: 2147483648 >>> 22 === 512. Actual: ' + (2147483648 >>> 22));
+}
+
+
+if (1 >>> 23 !== 0) {
+ $ERROR('#737: 1 >>> 23 === 0. Actual: ' + (1 >>> 23));
+}
+
+
+if (2 >>> 23 !== 0) {
+ $ERROR('#738: 2 >>> 23 === 0. Actual: ' + (2 >>> 23));
+}
+
+
+if (4 >>> 23 !== 0) {
+ $ERROR('#739: 4 >>> 23 === 0. Actual: ' + (4 >>> 23));
+}
+
+
+if (8 >>> 23 !== 0) {
+ $ERROR('#740: 8 >>> 23 === 0. Actual: ' + (8 >>> 23));
+}
+
+
+if (16 >>> 23 !== 0) {
+ $ERROR('#741: 16 >>> 23 === 0. Actual: ' + (16 >>> 23));
+}
+
+
+if (32 >>> 23 !== 0) {
+ $ERROR('#742: 32 >>> 23 === 0. Actual: ' + (32 >>> 23));
+}
+
+
+if (64 >>> 23 !== 0) {
+ $ERROR('#743: 64 >>> 23 === 0. Actual: ' + (64 >>> 23));
+}
+
+
+if (128 >>> 23 !== 0) {
+ $ERROR('#744: 128 >>> 23 === 0. Actual: ' + (128 >>> 23));
+}
+
+
+if (256 >>> 23 !== 0) {
+ $ERROR('#745: 256 >>> 23 === 0. Actual: ' + (256 >>> 23));
+}
+
+
+if (512 >>> 23 !== 0) {
+ $ERROR('#746: 512 >>> 23 === 0. Actual: ' + (512 >>> 23));
+}
+
+
+if (1024 >>> 23 !== 0) {
+ $ERROR('#747: 1024 >>> 23 === 0. Actual: ' + (1024 >>> 23));
+}
+
+
+if (2048 >>> 23 !== 0) {
+ $ERROR('#748: 2048 >>> 23 === 0. Actual: ' + (2048 >>> 23));
+}
+
+
+if (4096 >>> 23 !== 0) {
+ $ERROR('#749: 4096 >>> 23 === 0. Actual: ' + (4096 >>> 23));
+}
+
+
+if (8192 >>> 23 !== 0) {
+ $ERROR('#750: 8192 >>> 23 === 0. Actual: ' + (8192 >>> 23));
+}
+
+
+if (16384 >>> 23 !== 0) {
+ $ERROR('#751: 16384 >>> 23 === 0. Actual: ' + (16384 >>> 23));
+}
+
+
+if (32768 >>> 23 !== 0) {
+ $ERROR('#752: 32768 >>> 23 === 0. Actual: ' + (32768 >>> 23));
+}
+
+
+if (65536 >>> 23 !== 0) {
+ $ERROR('#753: 65536 >>> 23 === 0. Actual: ' + (65536 >>> 23));
+}
+
+
+if (131072 >>> 23 !== 0) {
+ $ERROR('#754: 131072 >>> 23 === 0. Actual: ' + (131072 >>> 23));
+}
+
+
+if (262144 >>> 23 !== 0) {
+ $ERROR('#755: 262144 >>> 23 === 0. Actual: ' + (262144 >>> 23));
+}
+
+
+if (524288 >>> 23 !== 0) {
+ $ERROR('#756: 524288 >>> 23 === 0. Actual: ' + (524288 >>> 23));
+}
+
+
+if (1048576 >>> 23 !== 0) {
+ $ERROR('#757: 1048576 >>> 23 === 0. Actual: ' + (1048576 >>> 23));
+}
+
+
+if (2097152 >>> 23 !== 0) {
+ $ERROR('#758: 2097152 >>> 23 === 0. Actual: ' + (2097152 >>> 23));
+}
+
+
+if (4194304 >>> 23 !== 0) {
+ $ERROR('#759: 4194304 >>> 23 === 0. Actual: ' + (4194304 >>> 23));
+}
+
+
+if (8388608 >>> 23 !== 1) {
+ $ERROR('#760: 8388608 >>> 23 === 1. Actual: ' + (8388608 >>> 23));
+}
+
+
+if (16777216 >>> 23 !== 2) {
+ $ERROR('#761: 16777216 >>> 23 === 2. Actual: ' + (16777216 >>> 23));
+}
+
+
+if (33554432 >>> 23 !== 4) {
+ $ERROR('#762: 33554432 >>> 23 === 4. Actual: ' + (33554432 >>> 23));
+}
+
+
+if (67108864 >>> 23 !== 8) {
+ $ERROR('#763: 67108864 >>> 23 === 8. Actual: ' + (67108864 >>> 23));
+}
+
+
+if (134217728 >>> 23 !== 16) {
+ $ERROR('#764: 134217728 >>> 23 === 16. Actual: ' + (134217728 >>> 23));
+}
+
+
+if (268435456 >>> 23 !== 32) {
+ $ERROR('#765: 268435456 >>> 23 === 32. Actual: ' + (268435456 >>> 23));
+}
+
+
+if (536870912 >>> 23 !== 64) {
+ $ERROR('#766: 536870912 >>> 23 === 64. Actual: ' + (536870912 >>> 23));
+}
+
+
+if (1073741824 >>> 23 !== 128) {
+ $ERROR('#767: 1073741824 >>> 23 === 128. Actual: ' + (1073741824 >>> 23));
+}
+
+
+if (2147483648 >>> 23 !== 256) {
+ $ERROR('#768: 2147483648 >>> 23 === 256. Actual: ' + (2147483648 >>> 23));
+}
+
+
+if (1 >>> 24 !== 0) {
+ $ERROR('#769: 1 >>> 24 === 0. Actual: ' + (1 >>> 24));
+}
+
+
+if (2 >>> 24 !== 0) {
+ $ERROR('#770: 2 >>> 24 === 0. Actual: ' + (2 >>> 24));
+}
+
+
+if (4 >>> 24 !== 0) {
+ $ERROR('#771: 4 >>> 24 === 0. Actual: ' + (4 >>> 24));
+}
+
+
+if (8 >>> 24 !== 0) {
+ $ERROR('#772: 8 >>> 24 === 0. Actual: ' + (8 >>> 24));
+}
+
+
+if (16 >>> 24 !== 0) {
+ $ERROR('#773: 16 >>> 24 === 0. Actual: ' + (16 >>> 24));
+}
+
+
+if (32 >>> 24 !== 0) {
+ $ERROR('#774: 32 >>> 24 === 0. Actual: ' + (32 >>> 24));
+}
+
+
+if (64 >>> 24 !== 0) {
+ $ERROR('#775: 64 >>> 24 === 0. Actual: ' + (64 >>> 24));
+}
+
+
+if (128 >>> 24 !== 0) {
+ $ERROR('#776: 128 >>> 24 === 0. Actual: ' + (128 >>> 24));
+}
+
+
+if (256 >>> 24 !== 0) {
+ $ERROR('#777: 256 >>> 24 === 0. Actual: ' + (256 >>> 24));
+}
+
+
+if (512 >>> 24 !== 0) {
+ $ERROR('#778: 512 >>> 24 === 0. Actual: ' + (512 >>> 24));
+}
+
+
+if (1024 >>> 24 !== 0) {
+ $ERROR('#779: 1024 >>> 24 === 0. Actual: ' + (1024 >>> 24));
+}
+
+
+if (2048 >>> 24 !== 0) {
+ $ERROR('#780: 2048 >>> 24 === 0. Actual: ' + (2048 >>> 24));
+}
+
+
+if (4096 >>> 24 !== 0) {
+ $ERROR('#781: 4096 >>> 24 === 0. Actual: ' + (4096 >>> 24));
+}
+
+
+if (8192 >>> 24 !== 0) {
+ $ERROR('#782: 8192 >>> 24 === 0. Actual: ' + (8192 >>> 24));
+}
+
+
+if (16384 >>> 24 !== 0) {
+ $ERROR('#783: 16384 >>> 24 === 0. Actual: ' + (16384 >>> 24));
+}
+
+
+if (32768 >>> 24 !== 0) {
+ $ERROR('#784: 32768 >>> 24 === 0. Actual: ' + (32768 >>> 24));
+}
+
+
+if (65536 >>> 24 !== 0) {
+ $ERROR('#785: 65536 >>> 24 === 0. Actual: ' + (65536 >>> 24));
+}
+
+
+if (131072 >>> 24 !== 0) {
+ $ERROR('#786: 131072 >>> 24 === 0. Actual: ' + (131072 >>> 24));
+}
+
+
+if (262144 >>> 24 !== 0) {
+ $ERROR('#787: 262144 >>> 24 === 0. Actual: ' + (262144 >>> 24));
+}
+
+
+if (524288 >>> 24 !== 0) {
+ $ERROR('#788: 524288 >>> 24 === 0. Actual: ' + (524288 >>> 24));
+}
+
+
+if (1048576 >>> 24 !== 0) {
+ $ERROR('#789: 1048576 >>> 24 === 0. Actual: ' + (1048576 >>> 24));
+}
+
+
+if (2097152 >>> 24 !== 0) {
+ $ERROR('#790: 2097152 >>> 24 === 0. Actual: ' + (2097152 >>> 24));
+}
+
+
+if (4194304 >>> 24 !== 0) {
+ $ERROR('#791: 4194304 >>> 24 === 0. Actual: ' + (4194304 >>> 24));
+}
+
+
+if (8388608 >>> 24 !== 0) {
+ $ERROR('#792: 8388608 >>> 24 === 0. Actual: ' + (8388608 >>> 24));
+}
+
+
+if (16777216 >>> 24 !== 1) {
+ $ERROR('#793: 16777216 >>> 24 === 1. Actual: ' + (16777216 >>> 24));
+}
+
+
+if (33554432 >>> 24 !== 2) {
+ $ERROR('#794: 33554432 >>> 24 === 2. Actual: ' + (33554432 >>> 24));
+}
+
+
+if (67108864 >>> 24 !== 4) {
+ $ERROR('#795: 67108864 >>> 24 === 4. Actual: ' + (67108864 >>> 24));
+}
+
+
+if (134217728 >>> 24 !== 8) {
+ $ERROR('#796: 134217728 >>> 24 === 8. Actual: ' + (134217728 >>> 24));
+}
+
+
+if (268435456 >>> 24 !== 16) {
+ $ERROR('#797: 268435456 >>> 24 === 16. Actual: ' + (268435456 >>> 24));
+}
+
+
+if (536870912 >>> 24 !== 32) {
+ $ERROR('#798: 536870912 >>> 24 === 32. Actual: ' + (536870912 >>> 24));
+}
+
+
+if (1073741824 >>> 24 !== 64) {
+ $ERROR('#799: 1073741824 >>> 24 === 64. Actual: ' + (1073741824 >>> 24));
+}
+
+
+if (2147483648 >>> 24 !== 128) {
+ $ERROR('#800: 2147483648 >>> 24 === 128. Actual: ' + (2147483648 >>> 24));
+}
+
+
+if (1 >>> 25 !== 0) {
+ $ERROR('#801: 1 >>> 25 === 0. Actual: ' + (1 >>> 25));
+}
+
+
+if (2 >>> 25 !== 0) {
+ $ERROR('#802: 2 >>> 25 === 0. Actual: ' + (2 >>> 25));
+}
+
+
+if (4 >>> 25 !== 0) {
+ $ERROR('#803: 4 >>> 25 === 0. Actual: ' + (4 >>> 25));
+}
+
+
+if (8 >>> 25 !== 0) {
+ $ERROR('#804: 8 >>> 25 === 0. Actual: ' + (8 >>> 25));
+}
+
+
+if (16 >>> 25 !== 0) {
+ $ERROR('#805: 16 >>> 25 === 0. Actual: ' + (16 >>> 25));
+}
+
+
+if (32 >>> 25 !== 0) {
+ $ERROR('#806: 32 >>> 25 === 0. Actual: ' + (32 >>> 25));
+}
+
+
+if (64 >>> 25 !== 0) {
+ $ERROR('#807: 64 >>> 25 === 0. Actual: ' + (64 >>> 25));
+}
+
+
+if (128 >>> 25 !== 0) {
+ $ERROR('#808: 128 >>> 25 === 0. Actual: ' + (128 >>> 25));
+}
+
+
+if (256 >>> 25 !== 0) {
+ $ERROR('#809: 256 >>> 25 === 0. Actual: ' + (256 >>> 25));
+}
+
+
+if (512 >>> 25 !== 0) {
+ $ERROR('#810: 512 >>> 25 === 0. Actual: ' + (512 >>> 25));
+}
+
+
+if (1024 >>> 25 !== 0) {
+ $ERROR('#811: 1024 >>> 25 === 0. Actual: ' + (1024 >>> 25));
+}
+
+
+if (2048 >>> 25 !== 0) {
+ $ERROR('#812: 2048 >>> 25 === 0. Actual: ' + (2048 >>> 25));
+}
+
+
+if (4096 >>> 25 !== 0) {
+ $ERROR('#813: 4096 >>> 25 === 0. Actual: ' + (4096 >>> 25));
+}
+
+
+if (8192 >>> 25 !== 0) {
+ $ERROR('#814: 8192 >>> 25 === 0. Actual: ' + (8192 >>> 25));
+}
+
+
+if (16384 >>> 25 !== 0) {
+ $ERROR('#815: 16384 >>> 25 === 0. Actual: ' + (16384 >>> 25));
+}
+
+
+if (32768 >>> 25 !== 0) {
+ $ERROR('#816: 32768 >>> 25 === 0. Actual: ' + (32768 >>> 25));
+}
+
+
+if (65536 >>> 25 !== 0) {
+ $ERROR('#817: 65536 >>> 25 === 0. Actual: ' + (65536 >>> 25));
+}
+
+
+if (131072 >>> 25 !== 0) {
+ $ERROR('#818: 131072 >>> 25 === 0. Actual: ' + (131072 >>> 25));
+}
+
+
+if (262144 >>> 25 !== 0) {
+ $ERROR('#819: 262144 >>> 25 === 0. Actual: ' + (262144 >>> 25));
+}
+
+
+if (524288 >>> 25 !== 0) {
+ $ERROR('#820: 524288 >>> 25 === 0. Actual: ' + (524288 >>> 25));
+}
+
+
+if (1048576 >>> 25 !== 0) {
+ $ERROR('#821: 1048576 >>> 25 === 0. Actual: ' + (1048576 >>> 25));
+}
+
+
+if (2097152 >>> 25 !== 0) {
+ $ERROR('#822: 2097152 >>> 25 === 0. Actual: ' + (2097152 >>> 25));
+}
+
+
+if (4194304 >>> 25 !== 0) {
+ $ERROR('#823: 4194304 >>> 25 === 0. Actual: ' + (4194304 >>> 25));
+}
+
+
+if (8388608 >>> 25 !== 0) {
+ $ERROR('#824: 8388608 >>> 25 === 0. Actual: ' + (8388608 >>> 25));
+}
+
+
+if (16777216 >>> 25 !== 0) {
+ $ERROR('#825: 16777216 >>> 25 === 0. Actual: ' + (16777216 >>> 25));
+}
+
+
+if (33554432 >>> 25 !== 1) {
+ $ERROR('#826: 33554432 >>> 25 === 1. Actual: ' + (33554432 >>> 25));
+}
+
+
+if (67108864 >>> 25 !== 2) {
+ $ERROR('#827: 67108864 >>> 25 === 2. Actual: ' + (67108864 >>> 25));
+}
+
+
+if (134217728 >>> 25 !== 4) {
+ $ERROR('#828: 134217728 >>> 25 === 4. Actual: ' + (134217728 >>> 25));
+}
+
+
+if (268435456 >>> 25 !== 8) {
+ $ERROR('#829: 268435456 >>> 25 === 8. Actual: ' + (268435456 >>> 25));
+}
+
+
+if (536870912 >>> 25 !== 16) {
+ $ERROR('#830: 536870912 >>> 25 === 16. Actual: ' + (536870912 >>> 25));
+}
+
+
+if (1073741824 >>> 25 !== 32) {
+ $ERROR('#831: 1073741824 >>> 25 === 32. Actual: ' + (1073741824 >>> 25));
+}
+
+
+if (2147483648 >>> 25 !== 64) {
+ $ERROR('#832: 2147483648 >>> 25 === 64. Actual: ' + (2147483648 >>> 25));
+}
+
+
+if (1 >>> 26 !== 0) {
+ $ERROR('#833: 1 >>> 26 === 0. Actual: ' + (1 >>> 26));
+}
+
+
+if (2 >>> 26 !== 0) {
+ $ERROR('#834: 2 >>> 26 === 0. Actual: ' + (2 >>> 26));
+}
+
+
+if (4 >>> 26 !== 0) {
+ $ERROR('#835: 4 >>> 26 === 0. Actual: ' + (4 >>> 26));
+}
+
+
+if (8 >>> 26 !== 0) {
+ $ERROR('#836: 8 >>> 26 === 0. Actual: ' + (8 >>> 26));
+}
+
+
+if (16 >>> 26 !== 0) {
+ $ERROR('#837: 16 >>> 26 === 0. Actual: ' + (16 >>> 26));
+}
+
+
+if (32 >>> 26 !== 0) {
+ $ERROR('#838: 32 >>> 26 === 0. Actual: ' + (32 >>> 26));
+}
+
+
+if (64 >>> 26 !== 0) {
+ $ERROR('#839: 64 >>> 26 === 0. Actual: ' + (64 >>> 26));
+}
+
+
+if (128 >>> 26 !== 0) {
+ $ERROR('#840: 128 >>> 26 === 0. Actual: ' + (128 >>> 26));
+}
+
+
+if (256 >>> 26 !== 0) {
+ $ERROR('#841: 256 >>> 26 === 0. Actual: ' + (256 >>> 26));
+}
+
+
+if (512 >>> 26 !== 0) {
+ $ERROR('#842: 512 >>> 26 === 0. Actual: ' + (512 >>> 26));
+}
+
+
+if (1024 >>> 26 !== 0) {
+ $ERROR('#843: 1024 >>> 26 === 0. Actual: ' + (1024 >>> 26));
+}
+
+
+if (2048 >>> 26 !== 0) {
+ $ERROR('#844: 2048 >>> 26 === 0. Actual: ' + (2048 >>> 26));
+}
+
+
+if (4096 >>> 26 !== 0) {
+ $ERROR('#845: 4096 >>> 26 === 0. Actual: ' + (4096 >>> 26));
+}
+
+
+if (8192 >>> 26 !== 0) {
+ $ERROR('#846: 8192 >>> 26 === 0. Actual: ' + (8192 >>> 26));
+}
+
+
+if (16384 >>> 26 !== 0) {
+ $ERROR('#847: 16384 >>> 26 === 0. Actual: ' + (16384 >>> 26));
+}
+
+
+if (32768 >>> 26 !== 0) {
+ $ERROR('#848: 32768 >>> 26 === 0. Actual: ' + (32768 >>> 26));
+}
+
+
+if (65536 >>> 26 !== 0) {
+ $ERROR('#849: 65536 >>> 26 === 0. Actual: ' + (65536 >>> 26));
+}
+
+
+if (131072 >>> 26 !== 0) {
+ $ERROR('#850: 131072 >>> 26 === 0. Actual: ' + (131072 >>> 26));
+}
+
+
+if (262144 >>> 26 !== 0) {
+ $ERROR('#851: 262144 >>> 26 === 0. Actual: ' + (262144 >>> 26));
+}
+
+
+if (524288 >>> 26 !== 0) {
+ $ERROR('#852: 524288 >>> 26 === 0. Actual: ' + (524288 >>> 26));
+}
+
+
+if (1048576 >>> 26 !== 0) {
+ $ERROR('#853: 1048576 >>> 26 === 0. Actual: ' + (1048576 >>> 26));
+}
+
+
+if (2097152 >>> 26 !== 0) {
+ $ERROR('#854: 2097152 >>> 26 === 0. Actual: ' + (2097152 >>> 26));
+}
+
+
+if (4194304 >>> 26 !== 0) {
+ $ERROR('#855: 4194304 >>> 26 === 0. Actual: ' + (4194304 >>> 26));
+}
+
+
+if (8388608 >>> 26 !== 0) {
+ $ERROR('#856: 8388608 >>> 26 === 0. Actual: ' + (8388608 >>> 26));
+}
+
+
+if (16777216 >>> 26 !== 0) {
+ $ERROR('#857: 16777216 >>> 26 === 0. Actual: ' + (16777216 >>> 26));
+}
+
+
+if (33554432 >>> 26 !== 0) {
+ $ERROR('#858: 33554432 >>> 26 === 0. Actual: ' + (33554432 >>> 26));
+}
+
+
+if (67108864 >>> 26 !== 1) {
+ $ERROR('#859: 67108864 >>> 26 === 1. Actual: ' + (67108864 >>> 26));
+}
+
+
+if (134217728 >>> 26 !== 2) {
+ $ERROR('#860: 134217728 >>> 26 === 2. Actual: ' + (134217728 >>> 26));
+}
+
+
+if (268435456 >>> 26 !== 4) {
+ $ERROR('#861: 268435456 >>> 26 === 4. Actual: ' + (268435456 >>> 26));
+}
+
+
+if (536870912 >>> 26 !== 8) {
+ $ERROR('#862: 536870912 >>> 26 === 8. Actual: ' + (536870912 >>> 26));
+}
+
+
+if (1073741824 >>> 26 !== 16) {
+ $ERROR('#863: 1073741824 >>> 26 === 16. Actual: ' + (1073741824 >>> 26));
+}
+
+
+if (2147483648 >>> 26 !== 32) {
+ $ERROR('#864: 2147483648 >>> 26 === 32. Actual: ' + (2147483648 >>> 26));
+}
+
+
+if (1 >>> 27 !== 0) {
+ $ERROR('#865: 1 >>> 27 === 0. Actual: ' + (1 >>> 27));
+}
+
+
+if (2 >>> 27 !== 0) {
+ $ERROR('#866: 2 >>> 27 === 0. Actual: ' + (2 >>> 27));
+}
+
+
+if (4 >>> 27 !== 0) {
+ $ERROR('#867: 4 >>> 27 === 0. Actual: ' + (4 >>> 27));
+}
+
+
+if (8 >>> 27 !== 0) {
+ $ERROR('#868: 8 >>> 27 === 0. Actual: ' + (8 >>> 27));
+}
+
+
+if (16 >>> 27 !== 0) {
+ $ERROR('#869: 16 >>> 27 === 0. Actual: ' + (16 >>> 27));
+}
+
+
+if (32 >>> 27 !== 0) {
+ $ERROR('#870: 32 >>> 27 === 0. Actual: ' + (32 >>> 27));
+}
+
+
+if (64 >>> 27 !== 0) {
+ $ERROR('#871: 64 >>> 27 === 0. Actual: ' + (64 >>> 27));
+}
+
+
+if (128 >>> 27 !== 0) {
+ $ERROR('#872: 128 >>> 27 === 0. Actual: ' + (128 >>> 27));
+}
+
+
+if (256 >>> 27 !== 0) {
+ $ERROR('#873: 256 >>> 27 === 0. Actual: ' + (256 >>> 27));
+}
+
+
+if (512 >>> 27 !== 0) {
+ $ERROR('#874: 512 >>> 27 === 0. Actual: ' + (512 >>> 27));
+}
+
+
+if (1024 >>> 27 !== 0) {
+ $ERROR('#875: 1024 >>> 27 === 0. Actual: ' + (1024 >>> 27));
+}
+
+
+if (2048 >>> 27 !== 0) {
+ $ERROR('#876: 2048 >>> 27 === 0. Actual: ' + (2048 >>> 27));
+}
+
+
+if (4096 >>> 27 !== 0) {
+ $ERROR('#877: 4096 >>> 27 === 0. Actual: ' + (4096 >>> 27));
+}
+
+
+if (8192 >>> 27 !== 0) {
+ $ERROR('#878: 8192 >>> 27 === 0. Actual: ' + (8192 >>> 27));
+}
+
+
+if (16384 >>> 27 !== 0) {
+ $ERROR('#879: 16384 >>> 27 === 0. Actual: ' + (16384 >>> 27));
+}
+
+
+if (32768 >>> 27 !== 0) {
+ $ERROR('#880: 32768 >>> 27 === 0. Actual: ' + (32768 >>> 27));
+}
+
+
+if (65536 >>> 27 !== 0) {
+ $ERROR('#881: 65536 >>> 27 === 0. Actual: ' + (65536 >>> 27));
+}
+
+
+if (131072 >>> 27 !== 0) {
+ $ERROR('#882: 131072 >>> 27 === 0. Actual: ' + (131072 >>> 27));
+}
+
+
+if (262144 >>> 27 !== 0) {
+ $ERROR('#883: 262144 >>> 27 === 0. Actual: ' + (262144 >>> 27));
+}
+
+
+if (524288 >>> 27 !== 0) {
+ $ERROR('#884: 524288 >>> 27 === 0. Actual: ' + (524288 >>> 27));
+}
+
+
+if (1048576 >>> 27 !== 0) {
+ $ERROR('#885: 1048576 >>> 27 === 0. Actual: ' + (1048576 >>> 27));
+}
+
+
+if (2097152 >>> 27 !== 0) {
+ $ERROR('#886: 2097152 >>> 27 === 0. Actual: ' + (2097152 >>> 27));
+}
+
+
+if (4194304 >>> 27 !== 0) {
+ $ERROR('#887: 4194304 >>> 27 === 0. Actual: ' + (4194304 >>> 27));
+}
+
+
+if (8388608 >>> 27 !== 0) {
+ $ERROR('#888: 8388608 >>> 27 === 0. Actual: ' + (8388608 >>> 27));
+}
+
+
+if (16777216 >>> 27 !== 0) {
+ $ERROR('#889: 16777216 >>> 27 === 0. Actual: ' + (16777216 >>> 27));
+}
+
+
+if (33554432 >>> 27 !== 0) {
+ $ERROR('#890: 33554432 >>> 27 === 0. Actual: ' + (33554432 >>> 27));
+}
+
+
+if (67108864 >>> 27 !== 0) {
+ $ERROR('#891: 67108864 >>> 27 === 0. Actual: ' + (67108864 >>> 27));
+}
+
+
+if (134217728 >>> 27 !== 1) {
+ $ERROR('#892: 134217728 >>> 27 === 1. Actual: ' + (134217728 >>> 27));
+}
+
+
+if (268435456 >>> 27 !== 2) {
+ $ERROR('#893: 268435456 >>> 27 === 2. Actual: ' + (268435456 >>> 27));
+}
+
+
+if (536870912 >>> 27 !== 4) {
+ $ERROR('#894: 536870912 >>> 27 === 4. Actual: ' + (536870912 >>> 27));
+}
+
+
+if (1073741824 >>> 27 !== 8) {
+ $ERROR('#895: 1073741824 >>> 27 === 8. Actual: ' + (1073741824 >>> 27));
+}
+
+
+if (2147483648 >>> 27 !== 16) {
+ $ERROR('#896: 2147483648 >>> 27 === 16. Actual: ' + (2147483648 >>> 27));
+}
+
+
+if (1 >>> 28 !== 0) {
+ $ERROR('#897: 1 >>> 28 === 0. Actual: ' + (1 >>> 28));
+}
+
+
+if (2 >>> 28 !== 0) {
+ $ERROR('#898: 2 >>> 28 === 0. Actual: ' + (2 >>> 28));
+}
+
+
+if (4 >>> 28 !== 0) {
+ $ERROR('#899: 4 >>> 28 === 0. Actual: ' + (4 >>> 28));
+}
+
+
+if (8 >>> 28 !== 0) {
+ $ERROR('#900: 8 >>> 28 === 0. Actual: ' + (8 >>> 28));
+}
+
+
+if (16 >>> 28 !== 0) {
+ $ERROR('#901: 16 >>> 28 === 0. Actual: ' + (16 >>> 28));
+}
+
+
+if (32 >>> 28 !== 0) {
+ $ERROR('#902: 32 >>> 28 === 0. Actual: ' + (32 >>> 28));
+}
+
+
+if (64 >>> 28 !== 0) {
+ $ERROR('#903: 64 >>> 28 === 0. Actual: ' + (64 >>> 28));
+}
+
+
+if (128 >>> 28 !== 0) {
+ $ERROR('#904: 128 >>> 28 === 0. Actual: ' + (128 >>> 28));
+}
+
+
+if (256 >>> 28 !== 0) {
+ $ERROR('#905: 256 >>> 28 === 0. Actual: ' + (256 >>> 28));
+}
+
+
+if (512 >>> 28 !== 0) {
+ $ERROR('#906: 512 >>> 28 === 0. Actual: ' + (512 >>> 28));
+}
+
+
+if (1024 >>> 28 !== 0) {
+ $ERROR('#907: 1024 >>> 28 === 0. Actual: ' + (1024 >>> 28));
+}
+
+
+if (2048 >>> 28 !== 0) {
+ $ERROR('#908: 2048 >>> 28 === 0. Actual: ' + (2048 >>> 28));
+}
+
+
+if (4096 >>> 28 !== 0) {
+ $ERROR('#909: 4096 >>> 28 === 0. Actual: ' + (4096 >>> 28));
+}
+
+
+if (8192 >>> 28 !== 0) {
+ $ERROR('#910: 8192 >>> 28 === 0. Actual: ' + (8192 >>> 28));
+}
+
+
+if (16384 >>> 28 !== 0) {
+ $ERROR('#911: 16384 >>> 28 === 0. Actual: ' + (16384 >>> 28));
+}
+
+
+if (32768 >>> 28 !== 0) {
+ $ERROR('#912: 32768 >>> 28 === 0. Actual: ' + (32768 >>> 28));
+}
+
+
+if (65536 >>> 28 !== 0) {
+ $ERROR('#913: 65536 >>> 28 === 0. Actual: ' + (65536 >>> 28));
+}
+
+
+if (131072 >>> 28 !== 0) {
+ $ERROR('#914: 131072 >>> 28 === 0. Actual: ' + (131072 >>> 28));
+}
+
+
+if (262144 >>> 28 !== 0) {
+ $ERROR('#915: 262144 >>> 28 === 0. Actual: ' + (262144 >>> 28));
+}
+
+
+if (524288 >>> 28 !== 0) {
+ $ERROR('#916: 524288 >>> 28 === 0. Actual: ' + (524288 >>> 28));
+}
+
+
+if (1048576 >>> 28 !== 0) {
+ $ERROR('#917: 1048576 >>> 28 === 0. Actual: ' + (1048576 >>> 28));
+}
+
+
+if (2097152 >>> 28 !== 0) {
+ $ERROR('#918: 2097152 >>> 28 === 0. Actual: ' + (2097152 >>> 28));
+}
+
+
+if (4194304 >>> 28 !== 0) {
+ $ERROR('#919: 4194304 >>> 28 === 0. Actual: ' + (4194304 >>> 28));
+}
+
+
+if (8388608 >>> 28 !== 0) {
+ $ERROR('#920: 8388608 >>> 28 === 0. Actual: ' + (8388608 >>> 28));
+}
+
+
+if (16777216 >>> 28 !== 0) {
+ $ERROR('#921: 16777216 >>> 28 === 0. Actual: ' + (16777216 >>> 28));
+}
+
+
+if (33554432 >>> 28 !== 0) {
+ $ERROR('#922: 33554432 >>> 28 === 0. Actual: ' + (33554432 >>> 28));
+}
+
+
+if (67108864 >>> 28 !== 0) {
+ $ERROR('#923: 67108864 >>> 28 === 0. Actual: ' + (67108864 >>> 28));
+}
+
+
+if (134217728 >>> 28 !== 0) {
+ $ERROR('#924: 134217728 >>> 28 === 0. Actual: ' + (134217728 >>> 28));
+}
+
+
+if (268435456 >>> 28 !== 1) {
+ $ERROR('#925: 268435456 >>> 28 === 1. Actual: ' + (268435456 >>> 28));
+}
+
+
+if (536870912 >>> 28 !== 2) {
+ $ERROR('#926: 536870912 >>> 28 === 2. Actual: ' + (536870912 >>> 28));
+}
+
+
+if (1073741824 >>> 28 !== 4) {
+ $ERROR('#927: 1073741824 >>> 28 === 4. Actual: ' + (1073741824 >>> 28));
+}
+
+
+if (2147483648 >>> 28 !== 8) {
+ $ERROR('#928: 2147483648 >>> 28 === 8. Actual: ' + (2147483648 >>> 28));
+}
+
+
+if (1 >>> 29 !== 0) {
+ $ERROR('#929: 1 >>> 29 === 0. Actual: ' + (1 >>> 29));
+}
+
+
+if (2 >>> 29 !== 0) {
+ $ERROR('#930: 2 >>> 29 === 0. Actual: ' + (2 >>> 29));
+}
+
+
+if (4 >>> 29 !== 0) {
+ $ERROR('#931: 4 >>> 29 === 0. Actual: ' + (4 >>> 29));
+}
+
+
+if (8 >>> 29 !== 0) {
+ $ERROR('#932: 8 >>> 29 === 0. Actual: ' + (8 >>> 29));
+}
+
+
+if (16 >>> 29 !== 0) {
+ $ERROR('#933: 16 >>> 29 === 0. Actual: ' + (16 >>> 29));
+}
+
+
+if (32 >>> 29 !== 0) {
+ $ERROR('#934: 32 >>> 29 === 0. Actual: ' + (32 >>> 29));
+}
+
+
+if (64 >>> 29 !== 0) {
+ $ERROR('#935: 64 >>> 29 === 0. Actual: ' + (64 >>> 29));
+}
+
+
+if (128 >>> 29 !== 0) {
+ $ERROR('#936: 128 >>> 29 === 0. Actual: ' + (128 >>> 29));
+}
+
+
+if (256 >>> 29 !== 0) {
+ $ERROR('#937: 256 >>> 29 === 0. Actual: ' + (256 >>> 29));
+}
+
+
+if (512 >>> 29 !== 0) {
+ $ERROR('#938: 512 >>> 29 === 0. Actual: ' + (512 >>> 29));
+}
+
+
+if (1024 >>> 29 !== 0) {
+ $ERROR('#939: 1024 >>> 29 === 0. Actual: ' + (1024 >>> 29));
+}
+
+
+if (2048 >>> 29 !== 0) {
+ $ERROR('#940: 2048 >>> 29 === 0. Actual: ' + (2048 >>> 29));
+}
+
+
+if (4096 >>> 29 !== 0) {
+ $ERROR('#941: 4096 >>> 29 === 0. Actual: ' + (4096 >>> 29));
+}
+
+
+if (8192 >>> 29 !== 0) {
+ $ERROR('#942: 8192 >>> 29 === 0. Actual: ' + (8192 >>> 29));
+}
+
+
+if (16384 >>> 29 !== 0) {
+ $ERROR('#943: 16384 >>> 29 === 0. Actual: ' + (16384 >>> 29));
+}
+
+
+if (32768 >>> 29 !== 0) {
+ $ERROR('#944: 32768 >>> 29 === 0. Actual: ' + (32768 >>> 29));
+}
+
+
+if (65536 >>> 29 !== 0) {
+ $ERROR('#945: 65536 >>> 29 === 0. Actual: ' + (65536 >>> 29));
+}
+
+
+if (131072 >>> 29 !== 0) {
+ $ERROR('#946: 131072 >>> 29 === 0. Actual: ' + (131072 >>> 29));
+}
+
+
+if (262144 >>> 29 !== 0) {
+ $ERROR('#947: 262144 >>> 29 === 0. Actual: ' + (262144 >>> 29));
+}
+
+
+if (524288 >>> 29 !== 0) {
+ $ERROR('#948: 524288 >>> 29 === 0. Actual: ' + (524288 >>> 29));
+}
+
+
+if (1048576 >>> 29 !== 0) {
+ $ERROR('#949: 1048576 >>> 29 === 0. Actual: ' + (1048576 >>> 29));
+}
+
+
+if (2097152 >>> 29 !== 0) {
+ $ERROR('#950: 2097152 >>> 29 === 0. Actual: ' + (2097152 >>> 29));
+}
+
+
+if (4194304 >>> 29 !== 0) {
+ $ERROR('#951: 4194304 >>> 29 === 0. Actual: ' + (4194304 >>> 29));
+}
+
+
+if (8388608 >>> 29 !== 0) {
+ $ERROR('#952: 8388608 >>> 29 === 0. Actual: ' + (8388608 >>> 29));
+}
+
+
+if (16777216 >>> 29 !== 0) {
+ $ERROR('#953: 16777216 >>> 29 === 0. Actual: ' + (16777216 >>> 29));
+}
+
+
+if (33554432 >>> 29 !== 0) {
+ $ERROR('#954: 33554432 >>> 29 === 0. Actual: ' + (33554432 >>> 29));
+}
+
+
+if (67108864 >>> 29 !== 0) {
+ $ERROR('#955: 67108864 >>> 29 === 0. Actual: ' + (67108864 >>> 29));
+}
+
+
+if (134217728 >>> 29 !== 0) {
+ $ERROR('#956: 134217728 >>> 29 === 0. Actual: ' + (134217728 >>> 29));
+}
+
+
+if (268435456 >>> 29 !== 0) {
+ $ERROR('#957: 268435456 >>> 29 === 0. Actual: ' + (268435456 >>> 29));
+}
+
+
+if (536870912 >>> 29 !== 1) {
+ $ERROR('#958: 536870912 >>> 29 === 1. Actual: ' + (536870912 >>> 29));
+}
+
+
+if (1073741824 >>> 29 !== 2) {
+ $ERROR('#959: 1073741824 >>> 29 === 2. Actual: ' + (1073741824 >>> 29));
+}
+
+
+if (2147483648 >>> 29 !== 4) {
+ $ERROR('#960: 2147483648 >>> 29 === 4. Actual: ' + (2147483648 >>> 29));
+}
+
+
+if (1 >>> 30 !== 0) {
+ $ERROR('#961: 1 >>> 30 === 0. Actual: ' + (1 >>> 30));
+}
+
+
+if (2 >>> 30 !== 0) {
+ $ERROR('#962: 2 >>> 30 === 0. Actual: ' + (2 >>> 30));
+}
+
+
+if (4 >>> 30 !== 0) {
+ $ERROR('#963: 4 >>> 30 === 0. Actual: ' + (4 >>> 30));
+}
+
+
+if (8 >>> 30 !== 0) {
+ $ERROR('#964: 8 >>> 30 === 0. Actual: ' + (8 >>> 30));
+}
+
+
+if (16 >>> 30 !== 0) {
+ $ERROR('#965: 16 >>> 30 === 0. Actual: ' + (16 >>> 30));
+}
+
+
+if (32 >>> 30 !== 0) {
+ $ERROR('#966: 32 >>> 30 === 0. Actual: ' + (32 >>> 30));
+}
+
+
+if (64 >>> 30 !== 0) {
+ $ERROR('#967: 64 >>> 30 === 0. Actual: ' + (64 >>> 30));
+}
+
+
+if (128 >>> 30 !== 0) {
+ $ERROR('#968: 128 >>> 30 === 0. Actual: ' + (128 >>> 30));
+}
+
+
+if (256 >>> 30 !== 0) {
+ $ERROR('#969: 256 >>> 30 === 0. Actual: ' + (256 >>> 30));
+}
+
+
+if (512 >>> 30 !== 0) {
+ $ERROR('#970: 512 >>> 30 === 0. Actual: ' + (512 >>> 30));
+}
+
+
+if (1024 >>> 30 !== 0) {
+ $ERROR('#971: 1024 >>> 30 === 0. Actual: ' + (1024 >>> 30));
+}
+
+
+if (2048 >>> 30 !== 0) {
+ $ERROR('#972: 2048 >>> 30 === 0. Actual: ' + (2048 >>> 30));
+}
+
+
+if (4096 >>> 30 !== 0) {
+ $ERROR('#973: 4096 >>> 30 === 0. Actual: ' + (4096 >>> 30));
+}
+
+
+if (8192 >>> 30 !== 0) {
+ $ERROR('#974: 8192 >>> 30 === 0. Actual: ' + (8192 >>> 30));
+}
+
+
+if (16384 >>> 30 !== 0) {
+ $ERROR('#975: 16384 >>> 30 === 0. Actual: ' + (16384 >>> 30));
+}
+
+
+if (32768 >>> 30 !== 0) {
+ $ERROR('#976: 32768 >>> 30 === 0. Actual: ' + (32768 >>> 30));
+}
+
+
+if (65536 >>> 30 !== 0) {
+ $ERROR('#977: 65536 >>> 30 === 0. Actual: ' + (65536 >>> 30));
+}
+
+
+if (131072 >>> 30 !== 0) {
+ $ERROR('#978: 131072 >>> 30 === 0. Actual: ' + (131072 >>> 30));
+}
+
+
+if (262144 >>> 30 !== 0) {
+ $ERROR('#979: 262144 >>> 30 === 0. Actual: ' + (262144 >>> 30));
+}
+
+
+if (524288 >>> 30 !== 0) {
+ $ERROR('#980: 524288 >>> 30 === 0. Actual: ' + (524288 >>> 30));
+}
+
+
+if (1048576 >>> 30 !== 0) {
+ $ERROR('#981: 1048576 >>> 30 === 0. Actual: ' + (1048576 >>> 30));
+}
+
+
+if (2097152 >>> 30 !== 0) {
+ $ERROR('#982: 2097152 >>> 30 === 0. Actual: ' + (2097152 >>> 30));
+}
+
+
+if (4194304 >>> 30 !== 0) {
+ $ERROR('#983: 4194304 >>> 30 === 0. Actual: ' + (4194304 >>> 30));
+}
+
+
+if (8388608 >>> 30 !== 0) {
+ $ERROR('#984: 8388608 >>> 30 === 0. Actual: ' + (8388608 >>> 30));
+}
+
+
+if (16777216 >>> 30 !== 0) {
+ $ERROR('#985: 16777216 >>> 30 === 0. Actual: ' + (16777216 >>> 30));
+}
+
+
+if (33554432 >>> 30 !== 0) {
+ $ERROR('#986: 33554432 >>> 30 === 0. Actual: ' + (33554432 >>> 30));
+}
+
+
+if (67108864 >>> 30 !== 0) {
+ $ERROR('#987: 67108864 >>> 30 === 0. Actual: ' + (67108864 >>> 30));
+}
+
+
+if (134217728 >>> 30 !== 0) {
+ $ERROR('#988: 134217728 >>> 30 === 0. Actual: ' + (134217728 >>> 30));
+}
+
+
+if (268435456 >>> 30 !== 0) {
+ $ERROR('#989: 268435456 >>> 30 === 0. Actual: ' + (268435456 >>> 30));
+}
+
+
+if (536870912 >>> 30 !== 0) {
+ $ERROR('#990: 536870912 >>> 30 === 0. Actual: ' + (536870912 >>> 30));
+}
+
+
+if (1073741824 >>> 30 !== 1) {
+ $ERROR('#991: 1073741824 >>> 30 === 1. Actual: ' + (1073741824 >>> 30));
+}
+
+
+if (2147483648 >>> 30 !== 2) {
+ $ERROR('#992: 2147483648 >>> 30 === 2. Actual: ' + (2147483648 >>> 30));
+}
+
+
+if (1 >>> 31 !== 0) {
+ $ERROR('#993: 1 >>> 31 === 0. Actual: ' + (1 >>> 31));
+}
+
+
+if (2 >>> 31 !== 0) {
+ $ERROR('#994: 2 >>> 31 === 0. Actual: ' + (2 >>> 31));
+}
+
+
+if (4 >>> 31 !== 0) {
+ $ERROR('#995: 4 >>> 31 === 0. Actual: ' + (4 >>> 31));
+}
+
+
+if (8 >>> 31 !== 0) {
+ $ERROR('#996: 8 >>> 31 === 0. Actual: ' + (8 >>> 31));
+}
+
+
+if (16 >>> 31 !== 0) {
+ $ERROR('#997: 16 >>> 31 === 0. Actual: ' + (16 >>> 31));
+}
+
+
+if (32 >>> 31 !== 0) {
+ $ERROR('#998: 32 >>> 31 === 0. Actual: ' + (32 >>> 31));
+}
+
+
+if (64 >>> 31 !== 0) {
+ $ERROR('#999: 64 >>> 31 === 0. Actual: ' + (64 >>> 31));
+}
+
+
+if (128 >>> 31 !== 0) {
+ $ERROR('#1000: 128 >>> 31 === 0. Actual: ' + (128 >>> 31));
+}
+
+
+if (256 >>> 31 !== 0) {
+ $ERROR('#1001: 256 >>> 31 === 0. Actual: ' + (256 >>> 31));
+}
+
+
+if (512 >>> 31 !== 0) {
+ $ERROR('#1002: 512 >>> 31 === 0. Actual: ' + (512 >>> 31));
+}
+
+
+if (1024 >>> 31 !== 0) {
+ $ERROR('#1003: 1024 >>> 31 === 0. Actual: ' + (1024 >>> 31));
+}
+
+
+if (2048 >>> 31 !== 0) {
+ $ERROR('#1004: 2048 >>> 31 === 0. Actual: ' + (2048 >>> 31));
+}
+
+
+if (4096 >>> 31 !== 0) {
+ $ERROR('#1005: 4096 >>> 31 === 0. Actual: ' + (4096 >>> 31));
+}
+
+
+if (8192 >>> 31 !== 0) {
+ $ERROR('#1006: 8192 >>> 31 === 0. Actual: ' + (8192 >>> 31));
+}
+
+
+if (16384 >>> 31 !== 0) {
+ $ERROR('#1007: 16384 >>> 31 === 0. Actual: ' + (16384 >>> 31));
+}
+
+
+if (32768 >>> 31 !== 0) {
+ $ERROR('#1008: 32768 >>> 31 === 0. Actual: ' + (32768 >>> 31));
+}
+
+
+if (65536 >>> 31 !== 0) {
+ $ERROR('#1009: 65536 >>> 31 === 0. Actual: ' + (65536 >>> 31));
+}
+
+
+if (131072 >>> 31 !== 0) {
+ $ERROR('#1010: 131072 >>> 31 === 0. Actual: ' + (131072 >>> 31));
+}
+
+
+if (262144 >>> 31 !== 0) {
+ $ERROR('#1011: 262144 >>> 31 === 0. Actual: ' + (262144 >>> 31));
+}
+
+
+if (524288 >>> 31 !== 0) {
+ $ERROR('#1012: 524288 >>> 31 === 0. Actual: ' + (524288 >>> 31));
+}
+
+
+if (1048576 >>> 31 !== 0) {
+ $ERROR('#1013: 1048576 >>> 31 === 0. Actual: ' + (1048576 >>> 31));
+}
+
+
+if (2097152 >>> 31 !== 0) {
+ $ERROR('#1014: 2097152 >>> 31 === 0. Actual: ' + (2097152 >>> 31));
+}
+
+
+if (4194304 >>> 31 !== 0) {
+ $ERROR('#1015: 4194304 >>> 31 === 0. Actual: ' + (4194304 >>> 31));
+}
+
+
+if (8388608 >>> 31 !== 0) {
+ $ERROR('#1016: 8388608 >>> 31 === 0. Actual: ' + (8388608 >>> 31));
+}
+
+
+if (16777216 >>> 31 !== 0) {
+ $ERROR('#1017: 16777216 >>> 31 === 0. Actual: ' + (16777216 >>> 31));
+}
+
+
+if (33554432 >>> 31 !== 0) {
+ $ERROR('#1018: 33554432 >>> 31 === 0. Actual: ' + (33554432 >>> 31));
+}
+
+
+if (67108864 >>> 31 !== 0) {
+ $ERROR('#1019: 67108864 >>> 31 === 0. Actual: ' + (67108864 >>> 31));
+}
+
+
+if (134217728 >>> 31 !== 0) {
+ $ERROR('#1020: 134217728 >>> 31 === 0. Actual: ' + (134217728 >>> 31));
+}
+
+
+if (268435456 >>> 31 !== 0) {
+ $ERROR('#1021: 268435456 >>> 31 === 0. Actual: ' + (268435456 >>> 31));
+}
+
+
+if (536870912 >>> 31 !== 0) {
+ $ERROR('#1022: 536870912 >>> 31 === 0. Actual: ' + (536870912 >>> 31));
+}
+
+
+if (1073741824 >>> 31 !== 0) {
+ $ERROR('#1023: 1073741824 >>> 31 === 0. Actual: ' + (1073741824 >>> 31));
+}
+
+
+if (2147483648 >>> 31 !== 1) {
+ $ERROR('#1024: 2147483648 >>> 31 === 1. Actual: ' + (2147483648 >>> 31));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T3.js
new file mode 100644
index 000000000..93d12d714
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T3.js
@@ -0,0 +1,2650 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A4_T3;
+ * @section: 11.7.3;
+ * @assertion: Check operator x >>> y in distinct points;
+ * @description: ShiftExpression = 2^n - 1, n = 0...15;
+ */
+
+//CHECK
+
+if (0 >>> 0 !== 0) {
+ $ERROR('#1: 0 >>> 0 === 0. Actual: ' + (0 >>> 0));
+}
+
+
+if (1 >>> 0 !== 1) {
+ $ERROR('#2: 1 >>> 0 === 1. Actual: ' + (1 >>> 0));
+}
+
+
+if (3 >>> 0 !== 3) {
+ $ERROR('#3: 3 >>> 0 === 3. Actual: ' + (3 >>> 0));
+}
+
+
+if (7 >>> 0 !== 7) {
+ $ERROR('#4: 7 >>> 0 === 7. Actual: ' + (7 >>> 0));
+}
+
+
+if (15 >>> 0 !== 15) {
+ $ERROR('#5: 15 >>> 0 === 15. Actual: ' + (15 >>> 0));
+}
+
+
+if (31 >>> 0 !== 31) {
+ $ERROR('#6: 31 >>> 0 === 31. Actual: ' + (31 >>> 0));
+}
+
+
+if (63 >>> 0 !== 63) {
+ $ERROR('#7: 63 >>> 0 === 63. Actual: ' + (63 >>> 0));
+}
+
+
+if (127 >>> 0 !== 127) {
+ $ERROR('#8: 127 >>> 0 === 127. Actual: ' + (127 >>> 0));
+}
+
+
+if (255 >>> 0 !== 255) {
+ $ERROR('#9: 255 >>> 0 === 255. Actual: ' + (255 >>> 0));
+}
+
+
+if (511 >>> 0 !== 511) {
+ $ERROR('#10: 511 >>> 0 === 511. Actual: ' + (511 >>> 0));
+}
+
+
+if (1023 >>> 0 !== 1023) {
+ $ERROR('#11: 1023 >>> 0 === 1023. Actual: ' + (1023 >>> 0));
+}
+
+
+if (2047 >>> 0 !== 2047) {
+ $ERROR('#12: 2047 >>> 0 === 2047. Actual: ' + (2047 >>> 0));
+}
+
+
+if (4095 >>> 0 !== 4095) {
+ $ERROR('#13: 4095 >>> 0 === 4095. Actual: ' + (4095 >>> 0));
+}
+
+
+if (8191 >>> 0 !== 8191) {
+ $ERROR('#14: 8191 >>> 0 === 8191. Actual: ' + (8191 >>> 0));
+}
+
+
+if (16383 >>> 0 !== 16383) {
+ $ERROR('#15: 16383 >>> 0 === 16383. Actual: ' + (16383 >>> 0));
+}
+
+
+if (32767 >>> 0 !== 32767) {
+ $ERROR('#16: 32767 >>> 0 === 32767. Actual: ' + (32767 >>> 0));
+}
+
+
+if (65535 >>> 0 !== 65535) {
+ $ERROR('#17: 65535 >>> 0 === 65535. Actual: ' + (65535 >>> 0));
+}
+
+
+if (131071 >>> 0 !== 131071) {
+ $ERROR('#18: 131071 >>> 0 === 131071. Actual: ' + (131071 >>> 0));
+}
+
+
+if (262143 >>> 0 !== 262143) {
+ $ERROR('#19: 262143 >>> 0 === 262143. Actual: ' + (262143 >>> 0));
+}
+
+
+if (524287 >>> 0 !== 524287) {
+ $ERROR('#20: 524287 >>> 0 === 524287. Actual: ' + (524287 >>> 0));
+}
+
+
+if (1048575 >>> 0 !== 1048575) {
+ $ERROR('#21: 1048575 >>> 0 === 1048575. Actual: ' + (1048575 >>> 0));
+}
+
+
+if (2097151 >>> 0 !== 2097151) {
+ $ERROR('#22: 2097151 >>> 0 === 2097151. Actual: ' + (2097151 >>> 0));
+}
+
+
+if (4194303 >>> 0 !== 4194303) {
+ $ERROR('#23: 4194303 >>> 0 === 4194303. Actual: ' + (4194303 >>> 0));
+}
+
+
+if (8388607 >>> 0 !== 8388607) {
+ $ERROR('#24: 8388607 >>> 0 === 8388607. Actual: ' + (8388607 >>> 0));
+}
+
+
+if (16777215 >>> 0 !== 16777215) {
+ $ERROR('#25: 16777215 >>> 0 === 16777215. Actual: ' + (16777215 >>> 0));
+}
+
+
+if (33554431 >>> 0 !== 33554431) {
+ $ERROR('#26: 33554431 >>> 0 === 33554431. Actual: ' + (33554431 >>> 0));
+}
+
+
+if (67108863 >>> 0 !== 67108863) {
+ $ERROR('#27: 67108863 >>> 0 === 67108863. Actual: ' + (67108863 >>> 0));
+}
+
+
+if (134217727 >>> 0 !== 134217727) {
+ $ERROR('#28: 134217727 >>> 0 === 134217727. Actual: ' + (134217727 >>> 0));
+}
+
+
+if (268435455 >>> 0 !== 268435455) {
+ $ERROR('#29: 268435455 >>> 0 === 268435455. Actual: ' + (268435455 >>> 0));
+}
+
+
+if (536870911 >>> 0 !== 536870911) {
+ $ERROR('#30: 536870911 >>> 0 === 536870911. Actual: ' + (536870911 >>> 0));
+}
+
+
+if (1073741823 >>> 0 !== 1073741823) {
+ $ERROR('#31: 1073741823 >>> 0 === 1073741823. Actual: ' + (1073741823 >>> 0));
+}
+
+
+if (2147483647 >>> 0 !== 2147483647) {
+ $ERROR('#32: 2147483647 >>> 0 === 2147483647. Actual: ' + (2147483647 >>> 0));
+}
+
+
+if (4294967295 >>> 0 !== 4294967295) {
+ $ERROR('#33: 4294967295 >>> 0 === 4294967295. Actual: ' + (4294967295 >>> 0));
+}
+
+
+if (0 >>> 1 !== 0) {
+ $ERROR('#34: 0 >>> 1 === 0. Actual: ' + (0 >>> 1));
+}
+
+
+if (1 >>> 1 !== 0) {
+ $ERROR('#35: 1 >>> 1 === 0. Actual: ' + (1 >>> 1));
+}
+
+
+if (3 >>> 1 !== 1) {
+ $ERROR('#36: 3 >>> 1 === 1. Actual: ' + (3 >>> 1));
+}
+
+
+if (7 >>> 1 !== 3) {
+ $ERROR('#37: 7 >>> 1 === 3. Actual: ' + (7 >>> 1));
+}
+
+
+if (15 >>> 1 !== 7) {
+ $ERROR('#38: 15 >>> 1 === 7. Actual: ' + (15 >>> 1));
+}
+
+
+if (31 >>> 1 !== 15) {
+ $ERROR('#39: 31 >>> 1 === 15. Actual: ' + (31 >>> 1));
+}
+
+
+if (63 >>> 1 !== 31) {
+ $ERROR('#40: 63 >>> 1 === 31. Actual: ' + (63 >>> 1));
+}
+
+
+if (127 >>> 1 !== 63) {
+ $ERROR('#41: 127 >>> 1 === 63. Actual: ' + (127 >>> 1));
+}
+
+
+if (255 >>> 1 !== 127) {
+ $ERROR('#42: 255 >>> 1 === 127. Actual: ' + (255 >>> 1));
+}
+
+
+if (511 >>> 1 !== 255) {
+ $ERROR('#43: 511 >>> 1 === 255. Actual: ' + (511 >>> 1));
+}
+
+
+if (1023 >>> 1 !== 511) {
+ $ERROR('#44: 1023 >>> 1 === 511. Actual: ' + (1023 >>> 1));
+}
+
+
+if (2047 >>> 1 !== 1023) {
+ $ERROR('#45: 2047 >>> 1 === 1023. Actual: ' + (2047 >>> 1));
+}
+
+
+if (4095 >>> 1 !== 2047) {
+ $ERROR('#46: 4095 >>> 1 === 2047. Actual: ' + (4095 >>> 1));
+}
+
+
+if (8191 >>> 1 !== 4095) {
+ $ERROR('#47: 8191 >>> 1 === 4095. Actual: ' + (8191 >>> 1));
+}
+
+
+if (16383 >>> 1 !== 8191) {
+ $ERROR('#48: 16383 >>> 1 === 8191. Actual: ' + (16383 >>> 1));
+}
+
+
+if (32767 >>> 1 !== 16383) {
+ $ERROR('#49: 32767 >>> 1 === 16383. Actual: ' + (32767 >>> 1));
+}
+
+
+if (65535 >>> 1 !== 32767) {
+ $ERROR('#50: 65535 >>> 1 === 32767. Actual: ' + (65535 >>> 1));
+}
+
+
+if (131071 >>> 1 !== 65535) {
+ $ERROR('#51: 131071 >>> 1 === 65535. Actual: ' + (131071 >>> 1));
+}
+
+
+if (262143 >>> 1 !== 131071) {
+ $ERROR('#52: 262143 >>> 1 === 131071. Actual: ' + (262143 >>> 1));
+}
+
+
+if (524287 >>> 1 !== 262143) {
+ $ERROR('#53: 524287 >>> 1 === 262143. Actual: ' + (524287 >>> 1));
+}
+
+
+if (1048575 >>> 1 !== 524287) {
+ $ERROR('#54: 1048575 >>> 1 === 524287. Actual: ' + (1048575 >>> 1));
+}
+
+
+if (2097151 >>> 1 !== 1048575) {
+ $ERROR('#55: 2097151 >>> 1 === 1048575. Actual: ' + (2097151 >>> 1));
+}
+
+
+if (4194303 >>> 1 !== 2097151) {
+ $ERROR('#56: 4194303 >>> 1 === 2097151. Actual: ' + (4194303 >>> 1));
+}
+
+
+if (8388607 >>> 1 !== 4194303) {
+ $ERROR('#57: 8388607 >>> 1 === 4194303. Actual: ' + (8388607 >>> 1));
+}
+
+
+if (16777215 >>> 1 !== 8388607) {
+ $ERROR('#58: 16777215 >>> 1 === 8388607. Actual: ' + (16777215 >>> 1));
+}
+
+
+if (33554431 >>> 1 !== 16777215) {
+ $ERROR('#59: 33554431 >>> 1 === 16777215. Actual: ' + (33554431 >>> 1));
+}
+
+
+if (67108863 >>> 1 !== 33554431) {
+ $ERROR('#60: 67108863 >>> 1 === 33554431. Actual: ' + (67108863 >>> 1));
+}
+
+
+if (134217727 >>> 1 !== 67108863) {
+ $ERROR('#61: 134217727 >>> 1 === 67108863. Actual: ' + (134217727 >>> 1));
+}
+
+
+if (268435455 >>> 1 !== 134217727) {
+ $ERROR('#62: 268435455 >>> 1 === 134217727. Actual: ' + (268435455 >>> 1));
+}
+
+
+if (536870911 >>> 1 !== 268435455) {
+ $ERROR('#63: 536870911 >>> 1 === 268435455. Actual: ' + (536870911 >>> 1));
+}
+
+
+if (1073741823 >>> 1 !== 536870911) {
+ $ERROR('#64: 1073741823 >>> 1 === 536870911. Actual: ' + (1073741823 >>> 1));
+}
+
+
+if (2147483647 >>> 1 !== 1073741823) {
+ $ERROR('#65: 2147483647 >>> 1 === 1073741823. Actual: ' + (2147483647 >>> 1));
+}
+
+
+if (4294967295 >>> 1 !== 2147483647) {
+ $ERROR('#66: 4294967295 >>> 1 === 2147483647. Actual: ' + (4294967295 >>> 1));
+}
+
+
+if (0 >>> 2 !== 0) {
+ $ERROR('#67: 0 >>> 2 === 0. Actual: ' + (0 >>> 2));
+}
+
+
+if (1 >>> 2 !== 0) {
+ $ERROR('#68: 1 >>> 2 === 0. Actual: ' + (1 >>> 2));
+}
+
+
+if (3 >>> 2 !== 0) {
+ $ERROR('#69: 3 >>> 2 === 0. Actual: ' + (3 >>> 2));
+}
+
+
+if (7 >>> 2 !== 1) {
+ $ERROR('#70: 7 >>> 2 === 1. Actual: ' + (7 >>> 2));
+}
+
+
+if (15 >>> 2 !== 3) {
+ $ERROR('#71: 15 >>> 2 === 3. Actual: ' + (15 >>> 2));
+}
+
+
+if (31 >>> 2 !== 7) {
+ $ERROR('#72: 31 >>> 2 === 7. Actual: ' + (31 >>> 2));
+}
+
+
+if (63 >>> 2 !== 15) {
+ $ERROR('#73: 63 >>> 2 === 15. Actual: ' + (63 >>> 2));
+}
+
+
+if (127 >>> 2 !== 31) {
+ $ERROR('#74: 127 >>> 2 === 31. Actual: ' + (127 >>> 2));
+}
+
+
+if (255 >>> 2 !== 63) {
+ $ERROR('#75: 255 >>> 2 === 63. Actual: ' + (255 >>> 2));
+}
+
+
+if (511 >>> 2 !== 127) {
+ $ERROR('#76: 511 >>> 2 === 127. Actual: ' + (511 >>> 2));
+}
+
+
+if (1023 >>> 2 !== 255) {
+ $ERROR('#77: 1023 >>> 2 === 255. Actual: ' + (1023 >>> 2));
+}
+
+
+if (2047 >>> 2 !== 511) {
+ $ERROR('#78: 2047 >>> 2 === 511. Actual: ' + (2047 >>> 2));
+}
+
+
+if (4095 >>> 2 !== 1023) {
+ $ERROR('#79: 4095 >>> 2 === 1023. Actual: ' + (4095 >>> 2));
+}
+
+
+if (8191 >>> 2 !== 2047) {
+ $ERROR('#80: 8191 >>> 2 === 2047. Actual: ' + (8191 >>> 2));
+}
+
+
+if (16383 >>> 2 !== 4095) {
+ $ERROR('#81: 16383 >>> 2 === 4095. Actual: ' + (16383 >>> 2));
+}
+
+
+if (32767 >>> 2 !== 8191) {
+ $ERROR('#82: 32767 >>> 2 === 8191. Actual: ' + (32767 >>> 2));
+}
+
+
+if (65535 >>> 2 !== 16383) {
+ $ERROR('#83: 65535 >>> 2 === 16383. Actual: ' + (65535 >>> 2));
+}
+
+
+if (131071 >>> 2 !== 32767) {
+ $ERROR('#84: 131071 >>> 2 === 32767. Actual: ' + (131071 >>> 2));
+}
+
+
+if (262143 >>> 2 !== 65535) {
+ $ERROR('#85: 262143 >>> 2 === 65535. Actual: ' + (262143 >>> 2));
+}
+
+
+if (524287 >>> 2 !== 131071) {
+ $ERROR('#86: 524287 >>> 2 === 131071. Actual: ' + (524287 >>> 2));
+}
+
+
+if (1048575 >>> 2 !== 262143) {
+ $ERROR('#87: 1048575 >>> 2 === 262143. Actual: ' + (1048575 >>> 2));
+}
+
+
+if (2097151 >>> 2 !== 524287) {
+ $ERROR('#88: 2097151 >>> 2 === 524287. Actual: ' + (2097151 >>> 2));
+}
+
+
+if (4194303 >>> 2 !== 1048575) {
+ $ERROR('#89: 4194303 >>> 2 === 1048575. Actual: ' + (4194303 >>> 2));
+}
+
+
+if (8388607 >>> 2 !== 2097151) {
+ $ERROR('#90: 8388607 >>> 2 === 2097151. Actual: ' + (8388607 >>> 2));
+}
+
+
+if (16777215 >>> 2 !== 4194303) {
+ $ERROR('#91: 16777215 >>> 2 === 4194303. Actual: ' + (16777215 >>> 2));
+}
+
+
+if (33554431 >>> 2 !== 8388607) {
+ $ERROR('#92: 33554431 >>> 2 === 8388607. Actual: ' + (33554431 >>> 2));
+}
+
+
+if (67108863 >>> 2 !== 16777215) {
+ $ERROR('#93: 67108863 >>> 2 === 16777215. Actual: ' + (67108863 >>> 2));
+}
+
+
+if (134217727 >>> 2 !== 33554431) {
+ $ERROR('#94: 134217727 >>> 2 === 33554431. Actual: ' + (134217727 >>> 2));
+}
+
+
+if (268435455 >>> 2 !== 67108863) {
+ $ERROR('#95: 268435455 >>> 2 === 67108863. Actual: ' + (268435455 >>> 2));
+}
+
+
+if (536870911 >>> 2 !== 134217727) {
+ $ERROR('#96: 536870911 >>> 2 === 134217727. Actual: ' + (536870911 >>> 2));
+}
+
+
+if (1073741823 >>> 2 !== 268435455) {
+ $ERROR('#97: 1073741823 >>> 2 === 268435455. Actual: ' + (1073741823 >>> 2));
+}
+
+
+if (2147483647 >>> 2 !== 536870911) {
+ $ERROR('#98: 2147483647 >>> 2 === 536870911. Actual: ' + (2147483647 >>> 2));
+}
+
+
+if (4294967295 >>> 2 !== 1073741823) {
+ $ERROR('#99: 4294967295 >>> 2 === 1073741823. Actual: ' + (4294967295 >>> 2));
+}
+
+
+if (0 >>> 3 !== 0) {
+ $ERROR('#100: 0 >>> 3 === 0. Actual: ' + (0 >>> 3));
+}
+
+
+if (1 >>> 3 !== 0) {
+ $ERROR('#101: 1 >>> 3 === 0. Actual: ' + (1 >>> 3));
+}
+
+
+if (3 >>> 3 !== 0) {
+ $ERROR('#102: 3 >>> 3 === 0. Actual: ' + (3 >>> 3));
+}
+
+
+if (7 >>> 3 !== 0) {
+ $ERROR('#103: 7 >>> 3 === 0. Actual: ' + (7 >>> 3));
+}
+
+
+if (15 >>> 3 !== 1) {
+ $ERROR('#104: 15 >>> 3 === 1. Actual: ' + (15 >>> 3));
+}
+
+
+if (31 >>> 3 !== 3) {
+ $ERROR('#105: 31 >>> 3 === 3. Actual: ' + (31 >>> 3));
+}
+
+
+if (63 >>> 3 !== 7) {
+ $ERROR('#106: 63 >>> 3 === 7. Actual: ' + (63 >>> 3));
+}
+
+
+if (127 >>> 3 !== 15) {
+ $ERROR('#107: 127 >>> 3 === 15. Actual: ' + (127 >>> 3));
+}
+
+
+if (255 >>> 3 !== 31) {
+ $ERROR('#108: 255 >>> 3 === 31. Actual: ' + (255 >>> 3));
+}
+
+
+if (511 >>> 3 !== 63) {
+ $ERROR('#109: 511 >>> 3 === 63. Actual: ' + (511 >>> 3));
+}
+
+
+if (1023 >>> 3 !== 127) {
+ $ERROR('#110: 1023 >>> 3 === 127. Actual: ' + (1023 >>> 3));
+}
+
+
+if (2047 >>> 3 !== 255) {
+ $ERROR('#111: 2047 >>> 3 === 255. Actual: ' + (2047 >>> 3));
+}
+
+
+if (4095 >>> 3 !== 511) {
+ $ERROR('#112: 4095 >>> 3 === 511. Actual: ' + (4095 >>> 3));
+}
+
+
+if (8191 >>> 3 !== 1023) {
+ $ERROR('#113: 8191 >>> 3 === 1023. Actual: ' + (8191 >>> 3));
+}
+
+
+if (16383 >>> 3 !== 2047) {
+ $ERROR('#114: 16383 >>> 3 === 2047. Actual: ' + (16383 >>> 3));
+}
+
+
+if (32767 >>> 3 !== 4095) {
+ $ERROR('#115: 32767 >>> 3 === 4095. Actual: ' + (32767 >>> 3));
+}
+
+
+if (65535 >>> 3 !== 8191) {
+ $ERROR('#116: 65535 >>> 3 === 8191. Actual: ' + (65535 >>> 3));
+}
+
+
+if (131071 >>> 3 !== 16383) {
+ $ERROR('#117: 131071 >>> 3 === 16383. Actual: ' + (131071 >>> 3));
+}
+
+
+if (262143 >>> 3 !== 32767) {
+ $ERROR('#118: 262143 >>> 3 === 32767. Actual: ' + (262143 >>> 3));
+}
+
+
+if (524287 >>> 3 !== 65535) {
+ $ERROR('#119: 524287 >>> 3 === 65535. Actual: ' + (524287 >>> 3));
+}
+
+
+if (1048575 >>> 3 !== 131071) {
+ $ERROR('#120: 1048575 >>> 3 === 131071. Actual: ' + (1048575 >>> 3));
+}
+
+
+if (2097151 >>> 3 !== 262143) {
+ $ERROR('#121: 2097151 >>> 3 === 262143. Actual: ' + (2097151 >>> 3));
+}
+
+
+if (4194303 >>> 3 !== 524287) {
+ $ERROR('#122: 4194303 >>> 3 === 524287. Actual: ' + (4194303 >>> 3));
+}
+
+
+if (8388607 >>> 3 !== 1048575) {
+ $ERROR('#123: 8388607 >>> 3 === 1048575. Actual: ' + (8388607 >>> 3));
+}
+
+
+if (16777215 >>> 3 !== 2097151) {
+ $ERROR('#124: 16777215 >>> 3 === 2097151. Actual: ' + (16777215 >>> 3));
+}
+
+
+if (33554431 >>> 3 !== 4194303) {
+ $ERROR('#125: 33554431 >>> 3 === 4194303. Actual: ' + (33554431 >>> 3));
+}
+
+
+if (67108863 >>> 3 !== 8388607) {
+ $ERROR('#126: 67108863 >>> 3 === 8388607. Actual: ' + (67108863 >>> 3));
+}
+
+
+if (134217727 >>> 3 !== 16777215) {
+ $ERROR('#127: 134217727 >>> 3 === 16777215. Actual: ' + (134217727 >>> 3));
+}
+
+
+if (268435455 >>> 3 !== 33554431) {
+ $ERROR('#128: 268435455 >>> 3 === 33554431. Actual: ' + (268435455 >>> 3));
+}
+
+
+if (536870911 >>> 3 !== 67108863) {
+ $ERROR('#129: 536870911 >>> 3 === 67108863. Actual: ' + (536870911 >>> 3));
+}
+
+
+if (1073741823 >>> 3 !== 134217727) {
+ $ERROR('#130: 1073741823 >>> 3 === 134217727. Actual: ' + (1073741823 >>> 3));
+}
+
+
+if (2147483647 >>> 3 !== 268435455) {
+ $ERROR('#131: 2147483647 >>> 3 === 268435455. Actual: ' + (2147483647 >>> 3));
+}
+
+
+if (4294967295 >>> 3 !== 536870911) {
+ $ERROR('#132: 4294967295 >>> 3 === 536870911. Actual: ' + (4294967295 >>> 3));
+}
+
+
+if (0 >>> 4 !== 0) {
+ $ERROR('#133: 0 >>> 4 === 0. Actual: ' + (0 >>> 4));
+}
+
+
+if (1 >>> 4 !== 0) {
+ $ERROR('#134: 1 >>> 4 === 0. Actual: ' + (1 >>> 4));
+}
+
+
+if (3 >>> 4 !== 0) {
+ $ERROR('#135: 3 >>> 4 === 0. Actual: ' + (3 >>> 4));
+}
+
+
+if (7 >>> 4 !== 0) {
+ $ERROR('#136: 7 >>> 4 === 0. Actual: ' + (7 >>> 4));
+}
+
+
+if (15 >>> 4 !== 0) {
+ $ERROR('#137: 15 >>> 4 === 0. Actual: ' + (15 >>> 4));
+}
+
+
+if (31 >>> 4 !== 1) {
+ $ERROR('#138: 31 >>> 4 === 1. Actual: ' + (31 >>> 4));
+}
+
+
+if (63 >>> 4 !== 3) {
+ $ERROR('#139: 63 >>> 4 === 3. Actual: ' + (63 >>> 4));
+}
+
+
+if (127 >>> 4 !== 7) {
+ $ERROR('#140: 127 >>> 4 === 7. Actual: ' + (127 >>> 4));
+}
+
+
+if (255 >>> 4 !== 15) {
+ $ERROR('#141: 255 >>> 4 === 15. Actual: ' + (255 >>> 4));
+}
+
+
+if (511 >>> 4 !== 31) {
+ $ERROR('#142: 511 >>> 4 === 31. Actual: ' + (511 >>> 4));
+}
+
+
+if (1023 >>> 4 !== 63) {
+ $ERROR('#143: 1023 >>> 4 === 63. Actual: ' + (1023 >>> 4));
+}
+
+
+if (2047 >>> 4 !== 127) {
+ $ERROR('#144: 2047 >>> 4 === 127. Actual: ' + (2047 >>> 4));
+}
+
+
+if (4095 >>> 4 !== 255) {
+ $ERROR('#145: 4095 >>> 4 === 255. Actual: ' + (4095 >>> 4));
+}
+
+
+if (8191 >>> 4 !== 511) {
+ $ERROR('#146: 8191 >>> 4 === 511. Actual: ' + (8191 >>> 4));
+}
+
+
+if (16383 >>> 4 !== 1023) {
+ $ERROR('#147: 16383 >>> 4 === 1023. Actual: ' + (16383 >>> 4));
+}
+
+
+if (32767 >>> 4 !== 2047) {
+ $ERROR('#148: 32767 >>> 4 === 2047. Actual: ' + (32767 >>> 4));
+}
+
+
+if (65535 >>> 4 !== 4095) {
+ $ERROR('#149: 65535 >>> 4 === 4095. Actual: ' + (65535 >>> 4));
+}
+
+
+if (131071 >>> 4 !== 8191) {
+ $ERROR('#150: 131071 >>> 4 === 8191. Actual: ' + (131071 >>> 4));
+}
+
+
+if (262143 >>> 4 !== 16383) {
+ $ERROR('#151: 262143 >>> 4 === 16383. Actual: ' + (262143 >>> 4));
+}
+
+
+if (524287 >>> 4 !== 32767) {
+ $ERROR('#152: 524287 >>> 4 === 32767. Actual: ' + (524287 >>> 4));
+}
+
+
+if (1048575 >>> 4 !== 65535) {
+ $ERROR('#153: 1048575 >>> 4 === 65535. Actual: ' + (1048575 >>> 4));
+}
+
+
+if (2097151 >>> 4 !== 131071) {
+ $ERROR('#154: 2097151 >>> 4 === 131071. Actual: ' + (2097151 >>> 4));
+}
+
+
+if (4194303 >>> 4 !== 262143) {
+ $ERROR('#155: 4194303 >>> 4 === 262143. Actual: ' + (4194303 >>> 4));
+}
+
+
+if (8388607 >>> 4 !== 524287) {
+ $ERROR('#156: 8388607 >>> 4 === 524287. Actual: ' + (8388607 >>> 4));
+}
+
+
+if (16777215 >>> 4 !== 1048575) {
+ $ERROR('#157: 16777215 >>> 4 === 1048575. Actual: ' + (16777215 >>> 4));
+}
+
+
+if (33554431 >>> 4 !== 2097151) {
+ $ERROR('#158: 33554431 >>> 4 === 2097151. Actual: ' + (33554431 >>> 4));
+}
+
+
+if (67108863 >>> 4 !== 4194303) {
+ $ERROR('#159: 67108863 >>> 4 === 4194303. Actual: ' + (67108863 >>> 4));
+}
+
+
+if (134217727 >>> 4 !== 8388607) {
+ $ERROR('#160: 134217727 >>> 4 === 8388607. Actual: ' + (134217727 >>> 4));
+}
+
+
+if (268435455 >>> 4 !== 16777215) {
+ $ERROR('#161: 268435455 >>> 4 === 16777215. Actual: ' + (268435455 >>> 4));
+}
+
+
+if (536870911 >>> 4 !== 33554431) {
+ $ERROR('#162: 536870911 >>> 4 === 33554431. Actual: ' + (536870911 >>> 4));
+}
+
+
+if (1073741823 >>> 4 !== 67108863) {
+ $ERROR('#163: 1073741823 >>> 4 === 67108863. Actual: ' + (1073741823 >>> 4));
+}
+
+
+if (2147483647 >>> 4 !== 134217727) {
+ $ERROR('#164: 2147483647 >>> 4 === 134217727. Actual: ' + (2147483647 >>> 4));
+}
+
+
+if (4294967295 >>> 4 !== 268435455) {
+ $ERROR('#165: 4294967295 >>> 4 === 268435455. Actual: ' + (4294967295 >>> 4));
+}
+
+
+if (0 >>> 5 !== 0) {
+ $ERROR('#166: 0 >>> 5 === 0. Actual: ' + (0 >>> 5));
+}
+
+
+if (1 >>> 5 !== 0) {
+ $ERROR('#167: 1 >>> 5 === 0. Actual: ' + (1 >>> 5));
+}
+
+
+if (3 >>> 5 !== 0) {
+ $ERROR('#168: 3 >>> 5 === 0. Actual: ' + (3 >>> 5));
+}
+
+
+if (7 >>> 5 !== 0) {
+ $ERROR('#169: 7 >>> 5 === 0. Actual: ' + (7 >>> 5));
+}
+
+
+if (15 >>> 5 !== 0) {
+ $ERROR('#170: 15 >>> 5 === 0. Actual: ' + (15 >>> 5));
+}
+
+
+if (31 >>> 5 !== 0) {
+ $ERROR('#171: 31 >>> 5 === 0. Actual: ' + (31 >>> 5));
+}
+
+
+if (63 >>> 5 !== 1) {
+ $ERROR('#172: 63 >>> 5 === 1. Actual: ' + (63 >>> 5));
+}
+
+
+if (127 >>> 5 !== 3) {
+ $ERROR('#173: 127 >>> 5 === 3. Actual: ' + (127 >>> 5));
+}
+
+
+if (255 >>> 5 !== 7) {
+ $ERROR('#174: 255 >>> 5 === 7. Actual: ' + (255 >>> 5));
+}
+
+
+if (511 >>> 5 !== 15) {
+ $ERROR('#175: 511 >>> 5 === 15. Actual: ' + (511 >>> 5));
+}
+
+
+if (1023 >>> 5 !== 31) {
+ $ERROR('#176: 1023 >>> 5 === 31. Actual: ' + (1023 >>> 5));
+}
+
+
+if (2047 >>> 5 !== 63) {
+ $ERROR('#177: 2047 >>> 5 === 63. Actual: ' + (2047 >>> 5));
+}
+
+
+if (4095 >>> 5 !== 127) {
+ $ERROR('#178: 4095 >>> 5 === 127. Actual: ' + (4095 >>> 5));
+}
+
+
+if (8191 >>> 5 !== 255) {
+ $ERROR('#179: 8191 >>> 5 === 255. Actual: ' + (8191 >>> 5));
+}
+
+
+if (16383 >>> 5 !== 511) {
+ $ERROR('#180: 16383 >>> 5 === 511. Actual: ' + (16383 >>> 5));
+}
+
+
+if (32767 >>> 5 !== 1023) {
+ $ERROR('#181: 32767 >>> 5 === 1023. Actual: ' + (32767 >>> 5));
+}
+
+
+if (65535 >>> 5 !== 2047) {
+ $ERROR('#182: 65535 >>> 5 === 2047. Actual: ' + (65535 >>> 5));
+}
+
+
+if (131071 >>> 5 !== 4095) {
+ $ERROR('#183: 131071 >>> 5 === 4095. Actual: ' + (131071 >>> 5));
+}
+
+
+if (262143 >>> 5 !== 8191) {
+ $ERROR('#184: 262143 >>> 5 === 8191. Actual: ' + (262143 >>> 5));
+}
+
+
+if (524287 >>> 5 !== 16383) {
+ $ERROR('#185: 524287 >>> 5 === 16383. Actual: ' + (524287 >>> 5));
+}
+
+
+if (1048575 >>> 5 !== 32767) {
+ $ERROR('#186: 1048575 >>> 5 === 32767. Actual: ' + (1048575 >>> 5));
+}
+
+
+if (2097151 >>> 5 !== 65535) {
+ $ERROR('#187: 2097151 >>> 5 === 65535. Actual: ' + (2097151 >>> 5));
+}
+
+
+if (4194303 >>> 5 !== 131071) {
+ $ERROR('#188: 4194303 >>> 5 === 131071. Actual: ' + (4194303 >>> 5));
+}
+
+
+if (8388607 >>> 5 !== 262143) {
+ $ERROR('#189: 8388607 >>> 5 === 262143. Actual: ' + (8388607 >>> 5));
+}
+
+
+if (16777215 >>> 5 !== 524287) {
+ $ERROR('#190: 16777215 >>> 5 === 524287. Actual: ' + (16777215 >>> 5));
+}
+
+
+if (33554431 >>> 5 !== 1048575) {
+ $ERROR('#191: 33554431 >>> 5 === 1048575. Actual: ' + (33554431 >>> 5));
+}
+
+
+if (67108863 >>> 5 !== 2097151) {
+ $ERROR('#192: 67108863 >>> 5 === 2097151. Actual: ' + (67108863 >>> 5));
+}
+
+
+if (134217727 >>> 5 !== 4194303) {
+ $ERROR('#193: 134217727 >>> 5 === 4194303. Actual: ' + (134217727 >>> 5));
+}
+
+
+if (268435455 >>> 5 !== 8388607) {
+ $ERROR('#194: 268435455 >>> 5 === 8388607. Actual: ' + (268435455 >>> 5));
+}
+
+
+if (536870911 >>> 5 !== 16777215) {
+ $ERROR('#195: 536870911 >>> 5 === 16777215. Actual: ' + (536870911 >>> 5));
+}
+
+
+if (1073741823 >>> 5 !== 33554431) {
+ $ERROR('#196: 1073741823 >>> 5 === 33554431. Actual: ' + (1073741823 >>> 5));
+}
+
+
+if (2147483647 >>> 5 !== 67108863) {
+ $ERROR('#197: 2147483647 >>> 5 === 67108863. Actual: ' + (2147483647 >>> 5));
+}
+
+
+if (4294967295 >>> 5 !== 134217727) {
+ $ERROR('#198: 4294967295 >>> 5 === 134217727. Actual: ' + (4294967295 >>> 5));
+}
+
+
+if (0 >>> 6 !== 0) {
+ $ERROR('#199: 0 >>> 6 === 0. Actual: ' + (0 >>> 6));
+}
+
+
+if (1 >>> 6 !== 0) {
+ $ERROR('#200: 1 >>> 6 === 0. Actual: ' + (1 >>> 6));
+}
+
+
+if (3 >>> 6 !== 0) {
+ $ERROR('#201: 3 >>> 6 === 0. Actual: ' + (3 >>> 6));
+}
+
+
+if (7 >>> 6 !== 0) {
+ $ERROR('#202: 7 >>> 6 === 0. Actual: ' + (7 >>> 6));
+}
+
+
+if (15 >>> 6 !== 0) {
+ $ERROR('#203: 15 >>> 6 === 0. Actual: ' + (15 >>> 6));
+}
+
+
+if (31 >>> 6 !== 0) {
+ $ERROR('#204: 31 >>> 6 === 0. Actual: ' + (31 >>> 6));
+}
+
+
+if (63 >>> 6 !== 0) {
+ $ERROR('#205: 63 >>> 6 === 0. Actual: ' + (63 >>> 6));
+}
+
+
+if (127 >>> 6 !== 1) {
+ $ERROR('#206: 127 >>> 6 === 1. Actual: ' + (127 >>> 6));
+}
+
+
+if (255 >>> 6 !== 3) {
+ $ERROR('#207: 255 >>> 6 === 3. Actual: ' + (255 >>> 6));
+}
+
+
+if (511 >>> 6 !== 7) {
+ $ERROR('#208: 511 >>> 6 === 7. Actual: ' + (511 >>> 6));
+}
+
+
+if (1023 >>> 6 !== 15) {
+ $ERROR('#209: 1023 >>> 6 === 15. Actual: ' + (1023 >>> 6));
+}
+
+
+if (2047 >>> 6 !== 31) {
+ $ERROR('#210: 2047 >>> 6 === 31. Actual: ' + (2047 >>> 6));
+}
+
+
+if (4095 >>> 6 !== 63) {
+ $ERROR('#211: 4095 >>> 6 === 63. Actual: ' + (4095 >>> 6));
+}
+
+
+if (8191 >>> 6 !== 127) {
+ $ERROR('#212: 8191 >>> 6 === 127. Actual: ' + (8191 >>> 6));
+}
+
+
+if (16383 >>> 6 !== 255) {
+ $ERROR('#213: 16383 >>> 6 === 255. Actual: ' + (16383 >>> 6));
+}
+
+
+if (32767 >>> 6 !== 511) {
+ $ERROR('#214: 32767 >>> 6 === 511. Actual: ' + (32767 >>> 6));
+}
+
+
+if (65535 >>> 6 !== 1023) {
+ $ERROR('#215: 65535 >>> 6 === 1023. Actual: ' + (65535 >>> 6));
+}
+
+
+if (131071 >>> 6 !== 2047) {
+ $ERROR('#216: 131071 >>> 6 === 2047. Actual: ' + (131071 >>> 6));
+}
+
+
+if (262143 >>> 6 !== 4095) {
+ $ERROR('#217: 262143 >>> 6 === 4095. Actual: ' + (262143 >>> 6));
+}
+
+
+if (524287 >>> 6 !== 8191) {
+ $ERROR('#218: 524287 >>> 6 === 8191. Actual: ' + (524287 >>> 6));
+}
+
+
+if (1048575 >>> 6 !== 16383) {
+ $ERROR('#219: 1048575 >>> 6 === 16383. Actual: ' + (1048575 >>> 6));
+}
+
+
+if (2097151 >>> 6 !== 32767) {
+ $ERROR('#220: 2097151 >>> 6 === 32767. Actual: ' + (2097151 >>> 6));
+}
+
+
+if (4194303 >>> 6 !== 65535) {
+ $ERROR('#221: 4194303 >>> 6 === 65535. Actual: ' + (4194303 >>> 6));
+}
+
+
+if (8388607 >>> 6 !== 131071) {
+ $ERROR('#222: 8388607 >>> 6 === 131071. Actual: ' + (8388607 >>> 6));
+}
+
+
+if (16777215 >>> 6 !== 262143) {
+ $ERROR('#223: 16777215 >>> 6 === 262143. Actual: ' + (16777215 >>> 6));
+}
+
+
+if (33554431 >>> 6 !== 524287) {
+ $ERROR('#224: 33554431 >>> 6 === 524287. Actual: ' + (33554431 >>> 6));
+}
+
+
+if (67108863 >>> 6 !== 1048575) {
+ $ERROR('#225: 67108863 >>> 6 === 1048575. Actual: ' + (67108863 >>> 6));
+}
+
+
+if (134217727 >>> 6 !== 2097151) {
+ $ERROR('#226: 134217727 >>> 6 === 2097151. Actual: ' + (134217727 >>> 6));
+}
+
+
+if (268435455 >>> 6 !== 4194303) {
+ $ERROR('#227: 268435455 >>> 6 === 4194303. Actual: ' + (268435455 >>> 6));
+}
+
+
+if (536870911 >>> 6 !== 8388607) {
+ $ERROR('#228: 536870911 >>> 6 === 8388607. Actual: ' + (536870911 >>> 6));
+}
+
+
+if (1073741823 >>> 6 !== 16777215) {
+ $ERROR('#229: 1073741823 >>> 6 === 16777215. Actual: ' + (1073741823 >>> 6));
+}
+
+
+if (2147483647 >>> 6 !== 33554431) {
+ $ERROR('#230: 2147483647 >>> 6 === 33554431. Actual: ' + (2147483647 >>> 6));
+}
+
+
+if (4294967295 >>> 6 !== 67108863) {
+ $ERROR('#231: 4294967295 >>> 6 === 67108863. Actual: ' + (4294967295 >>> 6));
+}
+
+
+if (0 >>> 7 !== 0) {
+ $ERROR('#232: 0 >>> 7 === 0. Actual: ' + (0 >>> 7));
+}
+
+
+if (1 >>> 7 !== 0) {
+ $ERROR('#233: 1 >>> 7 === 0. Actual: ' + (1 >>> 7));
+}
+
+
+if (3 >>> 7 !== 0) {
+ $ERROR('#234: 3 >>> 7 === 0. Actual: ' + (3 >>> 7));
+}
+
+
+if (7 >>> 7 !== 0) {
+ $ERROR('#235: 7 >>> 7 === 0. Actual: ' + (7 >>> 7));
+}
+
+
+if (15 >>> 7 !== 0) {
+ $ERROR('#236: 15 >>> 7 === 0. Actual: ' + (15 >>> 7));
+}
+
+
+if (31 >>> 7 !== 0) {
+ $ERROR('#237: 31 >>> 7 === 0. Actual: ' + (31 >>> 7));
+}
+
+
+if (63 >>> 7 !== 0) {
+ $ERROR('#238: 63 >>> 7 === 0. Actual: ' + (63 >>> 7));
+}
+
+
+if (127 >>> 7 !== 0) {
+ $ERROR('#239: 127 >>> 7 === 0. Actual: ' + (127 >>> 7));
+}
+
+
+if (255 >>> 7 !== 1) {
+ $ERROR('#240: 255 >>> 7 === 1. Actual: ' + (255 >>> 7));
+}
+
+
+if (511 >>> 7 !== 3) {
+ $ERROR('#241: 511 >>> 7 === 3. Actual: ' + (511 >>> 7));
+}
+
+
+if (1023 >>> 7 !== 7) {
+ $ERROR('#242: 1023 >>> 7 === 7. Actual: ' + (1023 >>> 7));
+}
+
+
+if (2047 >>> 7 !== 15) {
+ $ERROR('#243: 2047 >>> 7 === 15. Actual: ' + (2047 >>> 7));
+}
+
+
+if (4095 >>> 7 !== 31) {
+ $ERROR('#244: 4095 >>> 7 === 31. Actual: ' + (4095 >>> 7));
+}
+
+
+if (8191 >>> 7 !== 63) {
+ $ERROR('#245: 8191 >>> 7 === 63. Actual: ' + (8191 >>> 7));
+}
+
+
+if (16383 >>> 7 !== 127) {
+ $ERROR('#246: 16383 >>> 7 === 127. Actual: ' + (16383 >>> 7));
+}
+
+
+if (32767 >>> 7 !== 255) {
+ $ERROR('#247: 32767 >>> 7 === 255. Actual: ' + (32767 >>> 7));
+}
+
+
+if (65535 >>> 7 !== 511) {
+ $ERROR('#248: 65535 >>> 7 === 511. Actual: ' + (65535 >>> 7));
+}
+
+
+if (131071 >>> 7 !== 1023) {
+ $ERROR('#249: 131071 >>> 7 === 1023. Actual: ' + (131071 >>> 7));
+}
+
+
+if (262143 >>> 7 !== 2047) {
+ $ERROR('#250: 262143 >>> 7 === 2047. Actual: ' + (262143 >>> 7));
+}
+
+
+if (524287 >>> 7 !== 4095) {
+ $ERROR('#251: 524287 >>> 7 === 4095. Actual: ' + (524287 >>> 7));
+}
+
+
+if (1048575 >>> 7 !== 8191) {
+ $ERROR('#252: 1048575 >>> 7 === 8191. Actual: ' + (1048575 >>> 7));
+}
+
+
+if (2097151 >>> 7 !== 16383) {
+ $ERROR('#253: 2097151 >>> 7 === 16383. Actual: ' + (2097151 >>> 7));
+}
+
+
+if (4194303 >>> 7 !== 32767) {
+ $ERROR('#254: 4194303 >>> 7 === 32767. Actual: ' + (4194303 >>> 7));
+}
+
+
+if (8388607 >>> 7 !== 65535) {
+ $ERROR('#255: 8388607 >>> 7 === 65535. Actual: ' + (8388607 >>> 7));
+}
+
+
+if (16777215 >>> 7 !== 131071) {
+ $ERROR('#256: 16777215 >>> 7 === 131071. Actual: ' + (16777215 >>> 7));
+}
+
+
+if (33554431 >>> 7 !== 262143) {
+ $ERROR('#257: 33554431 >>> 7 === 262143. Actual: ' + (33554431 >>> 7));
+}
+
+
+if (67108863 >>> 7 !== 524287) {
+ $ERROR('#258: 67108863 >>> 7 === 524287. Actual: ' + (67108863 >>> 7));
+}
+
+
+if (134217727 >>> 7 !== 1048575) {
+ $ERROR('#259: 134217727 >>> 7 === 1048575. Actual: ' + (134217727 >>> 7));
+}
+
+
+if (268435455 >>> 7 !== 2097151) {
+ $ERROR('#260: 268435455 >>> 7 === 2097151. Actual: ' + (268435455 >>> 7));
+}
+
+
+if (536870911 >>> 7 !== 4194303) {
+ $ERROR('#261: 536870911 >>> 7 === 4194303. Actual: ' + (536870911 >>> 7));
+}
+
+
+if (1073741823 >>> 7 !== 8388607) {
+ $ERROR('#262: 1073741823 >>> 7 === 8388607. Actual: ' + (1073741823 >>> 7));
+}
+
+
+if (2147483647 >>> 7 !== 16777215) {
+ $ERROR('#263: 2147483647 >>> 7 === 16777215. Actual: ' + (2147483647 >>> 7));
+}
+
+
+if (4294967295 >>> 7 !== 33554431) {
+ $ERROR('#264: 4294967295 >>> 7 === 33554431. Actual: ' + (4294967295 >>> 7));
+}
+
+
+if (0 >>> 8 !== 0) {
+ $ERROR('#265: 0 >>> 8 === 0. Actual: ' + (0 >>> 8));
+}
+
+
+if (1 >>> 8 !== 0) {
+ $ERROR('#266: 1 >>> 8 === 0. Actual: ' + (1 >>> 8));
+}
+
+
+if (3 >>> 8 !== 0) {
+ $ERROR('#267: 3 >>> 8 === 0. Actual: ' + (3 >>> 8));
+}
+
+
+if (7 >>> 8 !== 0) {
+ $ERROR('#268: 7 >>> 8 === 0. Actual: ' + (7 >>> 8));
+}
+
+
+if (15 >>> 8 !== 0) {
+ $ERROR('#269: 15 >>> 8 === 0. Actual: ' + (15 >>> 8));
+}
+
+
+if (31 >>> 8 !== 0) {
+ $ERROR('#270: 31 >>> 8 === 0. Actual: ' + (31 >>> 8));
+}
+
+
+if (63 >>> 8 !== 0) {
+ $ERROR('#271: 63 >>> 8 === 0. Actual: ' + (63 >>> 8));
+}
+
+
+if (127 >>> 8 !== 0) {
+ $ERROR('#272: 127 >>> 8 === 0. Actual: ' + (127 >>> 8));
+}
+
+
+if (255 >>> 8 !== 0) {
+ $ERROR('#273: 255 >>> 8 === 0. Actual: ' + (255 >>> 8));
+}
+
+
+if (511 >>> 8 !== 1) {
+ $ERROR('#274: 511 >>> 8 === 1. Actual: ' + (511 >>> 8));
+}
+
+
+if (1023 >>> 8 !== 3) {
+ $ERROR('#275: 1023 >>> 8 === 3. Actual: ' + (1023 >>> 8));
+}
+
+
+if (2047 >>> 8 !== 7) {
+ $ERROR('#276: 2047 >>> 8 === 7. Actual: ' + (2047 >>> 8));
+}
+
+
+if (4095 >>> 8 !== 15) {
+ $ERROR('#277: 4095 >>> 8 === 15. Actual: ' + (4095 >>> 8));
+}
+
+
+if (8191 >>> 8 !== 31) {
+ $ERROR('#278: 8191 >>> 8 === 31. Actual: ' + (8191 >>> 8));
+}
+
+
+if (16383 >>> 8 !== 63) {
+ $ERROR('#279: 16383 >>> 8 === 63. Actual: ' + (16383 >>> 8));
+}
+
+
+if (32767 >>> 8 !== 127) {
+ $ERROR('#280: 32767 >>> 8 === 127. Actual: ' + (32767 >>> 8));
+}
+
+
+if (65535 >>> 8 !== 255) {
+ $ERROR('#281: 65535 >>> 8 === 255. Actual: ' + (65535 >>> 8));
+}
+
+
+if (131071 >>> 8 !== 511) {
+ $ERROR('#282: 131071 >>> 8 === 511. Actual: ' + (131071 >>> 8));
+}
+
+
+if (262143 >>> 8 !== 1023) {
+ $ERROR('#283: 262143 >>> 8 === 1023. Actual: ' + (262143 >>> 8));
+}
+
+
+if (524287 >>> 8 !== 2047) {
+ $ERROR('#284: 524287 >>> 8 === 2047. Actual: ' + (524287 >>> 8));
+}
+
+
+if (1048575 >>> 8 !== 4095) {
+ $ERROR('#285: 1048575 >>> 8 === 4095. Actual: ' + (1048575 >>> 8));
+}
+
+
+if (2097151 >>> 8 !== 8191) {
+ $ERROR('#286: 2097151 >>> 8 === 8191. Actual: ' + (2097151 >>> 8));
+}
+
+
+if (4194303 >>> 8 !== 16383) {
+ $ERROR('#287: 4194303 >>> 8 === 16383. Actual: ' + (4194303 >>> 8));
+}
+
+
+if (8388607 >>> 8 !== 32767) {
+ $ERROR('#288: 8388607 >>> 8 === 32767. Actual: ' + (8388607 >>> 8));
+}
+
+
+if (16777215 >>> 8 !== 65535) {
+ $ERROR('#289: 16777215 >>> 8 === 65535. Actual: ' + (16777215 >>> 8));
+}
+
+
+if (33554431 >>> 8 !== 131071) {
+ $ERROR('#290: 33554431 >>> 8 === 131071. Actual: ' + (33554431 >>> 8));
+}
+
+
+if (67108863 >>> 8 !== 262143) {
+ $ERROR('#291: 67108863 >>> 8 === 262143. Actual: ' + (67108863 >>> 8));
+}
+
+
+if (134217727 >>> 8 !== 524287) {
+ $ERROR('#292: 134217727 >>> 8 === 524287. Actual: ' + (134217727 >>> 8));
+}
+
+
+if (268435455 >>> 8 !== 1048575) {
+ $ERROR('#293: 268435455 >>> 8 === 1048575. Actual: ' + (268435455 >>> 8));
+}
+
+
+if (536870911 >>> 8 !== 2097151) {
+ $ERROR('#294: 536870911 >>> 8 === 2097151. Actual: ' + (536870911 >>> 8));
+}
+
+
+if (1073741823 >>> 8 !== 4194303) {
+ $ERROR('#295: 1073741823 >>> 8 === 4194303. Actual: ' + (1073741823 >>> 8));
+}
+
+
+if (2147483647 >>> 8 !== 8388607) {
+ $ERROR('#296: 2147483647 >>> 8 === 8388607. Actual: ' + (2147483647 >>> 8));
+}
+
+
+if (4294967295 >>> 8 !== 16777215) {
+ $ERROR('#297: 4294967295 >>> 8 === 16777215. Actual: ' + (4294967295 >>> 8));
+}
+
+
+if (0 >>> 9 !== 0) {
+ $ERROR('#298: 0 >>> 9 === 0. Actual: ' + (0 >>> 9));
+}
+
+
+if (1 >>> 9 !== 0) {
+ $ERROR('#299: 1 >>> 9 === 0. Actual: ' + (1 >>> 9));
+}
+
+
+if (3 >>> 9 !== 0) {
+ $ERROR('#300: 3 >>> 9 === 0. Actual: ' + (3 >>> 9));
+}
+
+
+if (7 >>> 9 !== 0) {
+ $ERROR('#301: 7 >>> 9 === 0. Actual: ' + (7 >>> 9));
+}
+
+
+if (15 >>> 9 !== 0) {
+ $ERROR('#302: 15 >>> 9 === 0. Actual: ' + (15 >>> 9));
+}
+
+
+if (31 >>> 9 !== 0) {
+ $ERROR('#303: 31 >>> 9 === 0. Actual: ' + (31 >>> 9));
+}
+
+
+if (63 >>> 9 !== 0) {
+ $ERROR('#304: 63 >>> 9 === 0. Actual: ' + (63 >>> 9));
+}
+
+
+if (127 >>> 9 !== 0) {
+ $ERROR('#305: 127 >>> 9 === 0. Actual: ' + (127 >>> 9));
+}
+
+
+if (255 >>> 9 !== 0) {
+ $ERROR('#306: 255 >>> 9 === 0. Actual: ' + (255 >>> 9));
+}
+
+
+if (511 >>> 9 !== 0) {
+ $ERROR('#307: 511 >>> 9 === 0. Actual: ' + (511 >>> 9));
+}
+
+
+if (1023 >>> 9 !== 1) {
+ $ERROR('#308: 1023 >>> 9 === 1. Actual: ' + (1023 >>> 9));
+}
+
+
+if (2047 >>> 9 !== 3) {
+ $ERROR('#309: 2047 >>> 9 === 3. Actual: ' + (2047 >>> 9));
+}
+
+
+if (4095 >>> 9 !== 7) {
+ $ERROR('#310: 4095 >>> 9 === 7. Actual: ' + (4095 >>> 9));
+}
+
+
+if (8191 >>> 9 !== 15) {
+ $ERROR('#311: 8191 >>> 9 === 15. Actual: ' + (8191 >>> 9));
+}
+
+
+if (16383 >>> 9 !== 31) {
+ $ERROR('#312: 16383 >>> 9 === 31. Actual: ' + (16383 >>> 9));
+}
+
+
+if (32767 >>> 9 !== 63) {
+ $ERROR('#313: 32767 >>> 9 === 63. Actual: ' + (32767 >>> 9));
+}
+
+
+if (65535 >>> 9 !== 127) {
+ $ERROR('#314: 65535 >>> 9 === 127. Actual: ' + (65535 >>> 9));
+}
+
+
+if (131071 >>> 9 !== 255) {
+ $ERROR('#315: 131071 >>> 9 === 255. Actual: ' + (131071 >>> 9));
+}
+
+
+if (262143 >>> 9 !== 511) {
+ $ERROR('#316: 262143 >>> 9 === 511. Actual: ' + (262143 >>> 9));
+}
+
+
+if (524287 >>> 9 !== 1023) {
+ $ERROR('#317: 524287 >>> 9 === 1023. Actual: ' + (524287 >>> 9));
+}
+
+
+if (1048575 >>> 9 !== 2047) {
+ $ERROR('#318: 1048575 >>> 9 === 2047. Actual: ' + (1048575 >>> 9));
+}
+
+
+if (2097151 >>> 9 !== 4095) {
+ $ERROR('#319: 2097151 >>> 9 === 4095. Actual: ' + (2097151 >>> 9));
+}
+
+
+if (4194303 >>> 9 !== 8191) {
+ $ERROR('#320: 4194303 >>> 9 === 8191. Actual: ' + (4194303 >>> 9));
+}
+
+
+if (8388607 >>> 9 !== 16383) {
+ $ERROR('#321: 8388607 >>> 9 === 16383. Actual: ' + (8388607 >>> 9));
+}
+
+
+if (16777215 >>> 9 !== 32767) {
+ $ERROR('#322: 16777215 >>> 9 === 32767. Actual: ' + (16777215 >>> 9));
+}
+
+
+if (33554431 >>> 9 !== 65535) {
+ $ERROR('#323: 33554431 >>> 9 === 65535. Actual: ' + (33554431 >>> 9));
+}
+
+
+if (67108863 >>> 9 !== 131071) {
+ $ERROR('#324: 67108863 >>> 9 === 131071. Actual: ' + (67108863 >>> 9));
+}
+
+
+if (134217727 >>> 9 !== 262143) {
+ $ERROR('#325: 134217727 >>> 9 === 262143. Actual: ' + (134217727 >>> 9));
+}
+
+
+if (268435455 >>> 9 !== 524287) {
+ $ERROR('#326: 268435455 >>> 9 === 524287. Actual: ' + (268435455 >>> 9));
+}
+
+
+if (536870911 >>> 9 !== 1048575) {
+ $ERROR('#327: 536870911 >>> 9 === 1048575. Actual: ' + (536870911 >>> 9));
+}
+
+
+if (1073741823 >>> 9 !== 2097151) {
+ $ERROR('#328: 1073741823 >>> 9 === 2097151. Actual: ' + (1073741823 >>> 9));
+}
+
+
+if (2147483647 >>> 9 !== 4194303) {
+ $ERROR('#329: 2147483647 >>> 9 === 4194303. Actual: ' + (2147483647 >>> 9));
+}
+
+
+if (4294967295 >>> 9 !== 8388607) {
+ $ERROR('#330: 4294967295 >>> 9 === 8388607. Actual: ' + (4294967295 >>> 9));
+}
+
+
+if (0 >>> 10 !== 0) {
+ $ERROR('#331: 0 >>> 10 === 0. Actual: ' + (0 >>> 10));
+}
+
+
+if (1 >>> 10 !== 0) {
+ $ERROR('#332: 1 >>> 10 === 0. Actual: ' + (1 >>> 10));
+}
+
+
+if (3 >>> 10 !== 0) {
+ $ERROR('#333: 3 >>> 10 === 0. Actual: ' + (3 >>> 10));
+}
+
+
+if (7 >>> 10 !== 0) {
+ $ERROR('#334: 7 >>> 10 === 0. Actual: ' + (7 >>> 10));
+}
+
+
+if (15 >>> 10 !== 0) {
+ $ERROR('#335: 15 >>> 10 === 0. Actual: ' + (15 >>> 10));
+}
+
+
+if (31 >>> 10 !== 0) {
+ $ERROR('#336: 31 >>> 10 === 0. Actual: ' + (31 >>> 10));
+}
+
+
+if (63 >>> 10 !== 0) {
+ $ERROR('#337: 63 >>> 10 === 0. Actual: ' + (63 >>> 10));
+}
+
+
+if (127 >>> 10 !== 0) {
+ $ERROR('#338: 127 >>> 10 === 0. Actual: ' + (127 >>> 10));
+}
+
+
+if (255 >>> 10 !== 0) {
+ $ERROR('#339: 255 >>> 10 === 0. Actual: ' + (255 >>> 10));
+}
+
+
+if (511 >>> 10 !== 0) {
+ $ERROR('#340: 511 >>> 10 === 0. Actual: ' + (511 >>> 10));
+}
+
+
+if (1023 >>> 10 !== 0) {
+ $ERROR('#341: 1023 >>> 10 === 0. Actual: ' + (1023 >>> 10));
+}
+
+
+if (2047 >>> 10 !== 1) {
+ $ERROR('#342: 2047 >>> 10 === 1. Actual: ' + (2047 >>> 10));
+}
+
+
+if (4095 >>> 10 !== 3) {
+ $ERROR('#343: 4095 >>> 10 === 3. Actual: ' + (4095 >>> 10));
+}
+
+
+if (8191 >>> 10 !== 7) {
+ $ERROR('#344: 8191 >>> 10 === 7. Actual: ' + (8191 >>> 10));
+}
+
+
+if (16383 >>> 10 !== 15) {
+ $ERROR('#345: 16383 >>> 10 === 15. Actual: ' + (16383 >>> 10));
+}
+
+
+if (32767 >>> 10 !== 31) {
+ $ERROR('#346: 32767 >>> 10 === 31. Actual: ' + (32767 >>> 10));
+}
+
+
+if (65535 >>> 10 !== 63) {
+ $ERROR('#347: 65535 >>> 10 === 63. Actual: ' + (65535 >>> 10));
+}
+
+
+if (131071 >>> 10 !== 127) {
+ $ERROR('#348: 131071 >>> 10 === 127. Actual: ' + (131071 >>> 10));
+}
+
+
+if (262143 >>> 10 !== 255) {
+ $ERROR('#349: 262143 >>> 10 === 255. Actual: ' + (262143 >>> 10));
+}
+
+
+if (524287 >>> 10 !== 511) {
+ $ERROR('#350: 524287 >>> 10 === 511. Actual: ' + (524287 >>> 10));
+}
+
+
+if (1048575 >>> 10 !== 1023) {
+ $ERROR('#351: 1048575 >>> 10 === 1023. Actual: ' + (1048575 >>> 10));
+}
+
+
+if (2097151 >>> 10 !== 2047) {
+ $ERROR('#352: 2097151 >>> 10 === 2047. Actual: ' + (2097151 >>> 10));
+}
+
+
+if (4194303 >>> 10 !== 4095) {
+ $ERROR('#353: 4194303 >>> 10 === 4095. Actual: ' + (4194303 >>> 10));
+}
+
+
+if (8388607 >>> 10 !== 8191) {
+ $ERROR('#354: 8388607 >>> 10 === 8191. Actual: ' + (8388607 >>> 10));
+}
+
+
+if (16777215 >>> 10 !== 16383) {
+ $ERROR('#355: 16777215 >>> 10 === 16383. Actual: ' + (16777215 >>> 10));
+}
+
+
+if (33554431 >>> 10 !== 32767) {
+ $ERROR('#356: 33554431 >>> 10 === 32767. Actual: ' + (33554431 >>> 10));
+}
+
+
+if (67108863 >>> 10 !== 65535) {
+ $ERROR('#357: 67108863 >>> 10 === 65535. Actual: ' + (67108863 >>> 10));
+}
+
+
+if (134217727 >>> 10 !== 131071) {
+ $ERROR('#358: 134217727 >>> 10 === 131071. Actual: ' + (134217727 >>> 10));
+}
+
+
+if (268435455 >>> 10 !== 262143) {
+ $ERROR('#359: 268435455 >>> 10 === 262143. Actual: ' + (268435455 >>> 10));
+}
+
+
+if (536870911 >>> 10 !== 524287) {
+ $ERROR('#360: 536870911 >>> 10 === 524287. Actual: ' + (536870911 >>> 10));
+}
+
+
+if (1073741823 >>> 10 !== 1048575) {
+ $ERROR('#361: 1073741823 >>> 10 === 1048575. Actual: ' + (1073741823 >>> 10));
+}
+
+
+if (2147483647 >>> 10 !== 2097151) {
+ $ERROR('#362: 2147483647 >>> 10 === 2097151. Actual: ' + (2147483647 >>> 10));
+}
+
+
+if (4294967295 >>> 10 !== 4194303) {
+ $ERROR('#363: 4294967295 >>> 10 === 4194303. Actual: ' + (4294967295 >>> 10));
+}
+
+
+if (0 >>> 11 !== 0) {
+ $ERROR('#364: 0 >>> 11 === 0. Actual: ' + (0 >>> 11));
+}
+
+
+if (1 >>> 11 !== 0) {
+ $ERROR('#365: 1 >>> 11 === 0. Actual: ' + (1 >>> 11));
+}
+
+
+if (3 >>> 11 !== 0) {
+ $ERROR('#366: 3 >>> 11 === 0. Actual: ' + (3 >>> 11));
+}
+
+
+if (7 >>> 11 !== 0) {
+ $ERROR('#367: 7 >>> 11 === 0. Actual: ' + (7 >>> 11));
+}
+
+
+if (15 >>> 11 !== 0) {
+ $ERROR('#368: 15 >>> 11 === 0. Actual: ' + (15 >>> 11));
+}
+
+
+if (31 >>> 11 !== 0) {
+ $ERROR('#369: 31 >>> 11 === 0. Actual: ' + (31 >>> 11));
+}
+
+
+if (63 >>> 11 !== 0) {
+ $ERROR('#370: 63 >>> 11 === 0. Actual: ' + (63 >>> 11));
+}
+
+
+if (127 >>> 11 !== 0) {
+ $ERROR('#371: 127 >>> 11 === 0. Actual: ' + (127 >>> 11));
+}
+
+
+if (255 >>> 11 !== 0) {
+ $ERROR('#372: 255 >>> 11 === 0. Actual: ' + (255 >>> 11));
+}
+
+
+if (511 >>> 11 !== 0) {
+ $ERROR('#373: 511 >>> 11 === 0. Actual: ' + (511 >>> 11));
+}
+
+
+if (1023 >>> 11 !== 0) {
+ $ERROR('#374: 1023 >>> 11 === 0. Actual: ' + (1023 >>> 11));
+}
+
+
+if (2047 >>> 11 !== 0) {
+ $ERROR('#375: 2047 >>> 11 === 0. Actual: ' + (2047 >>> 11));
+}
+
+
+if (4095 >>> 11 !== 1) {
+ $ERROR('#376: 4095 >>> 11 === 1. Actual: ' + (4095 >>> 11));
+}
+
+
+if (8191 >>> 11 !== 3) {
+ $ERROR('#377: 8191 >>> 11 === 3. Actual: ' + (8191 >>> 11));
+}
+
+
+if (16383 >>> 11 !== 7) {
+ $ERROR('#378: 16383 >>> 11 === 7. Actual: ' + (16383 >>> 11));
+}
+
+
+if (32767 >>> 11 !== 15) {
+ $ERROR('#379: 32767 >>> 11 === 15. Actual: ' + (32767 >>> 11));
+}
+
+
+if (65535 >>> 11 !== 31) {
+ $ERROR('#380: 65535 >>> 11 === 31. Actual: ' + (65535 >>> 11));
+}
+
+
+if (131071 >>> 11 !== 63) {
+ $ERROR('#381: 131071 >>> 11 === 63. Actual: ' + (131071 >>> 11));
+}
+
+
+if (262143 >>> 11 !== 127) {
+ $ERROR('#382: 262143 >>> 11 === 127. Actual: ' + (262143 >>> 11));
+}
+
+
+if (524287 >>> 11 !== 255) {
+ $ERROR('#383: 524287 >>> 11 === 255. Actual: ' + (524287 >>> 11));
+}
+
+
+if (1048575 >>> 11 !== 511) {
+ $ERROR('#384: 1048575 >>> 11 === 511. Actual: ' + (1048575 >>> 11));
+}
+
+
+if (2097151 >>> 11 !== 1023) {
+ $ERROR('#385: 2097151 >>> 11 === 1023. Actual: ' + (2097151 >>> 11));
+}
+
+
+if (4194303 >>> 11 !== 2047) {
+ $ERROR('#386: 4194303 >>> 11 === 2047. Actual: ' + (4194303 >>> 11));
+}
+
+
+if (8388607 >>> 11 !== 4095) {
+ $ERROR('#387: 8388607 >>> 11 === 4095. Actual: ' + (8388607 >>> 11));
+}
+
+
+if (16777215 >>> 11 !== 8191) {
+ $ERROR('#388: 16777215 >>> 11 === 8191. Actual: ' + (16777215 >>> 11));
+}
+
+
+if (33554431 >>> 11 !== 16383) {
+ $ERROR('#389: 33554431 >>> 11 === 16383. Actual: ' + (33554431 >>> 11));
+}
+
+
+if (67108863 >>> 11 !== 32767) {
+ $ERROR('#390: 67108863 >>> 11 === 32767. Actual: ' + (67108863 >>> 11));
+}
+
+
+if (134217727 >>> 11 !== 65535) {
+ $ERROR('#391: 134217727 >>> 11 === 65535. Actual: ' + (134217727 >>> 11));
+}
+
+
+if (268435455 >>> 11 !== 131071) {
+ $ERROR('#392: 268435455 >>> 11 === 131071. Actual: ' + (268435455 >>> 11));
+}
+
+
+if (536870911 >>> 11 !== 262143) {
+ $ERROR('#393: 536870911 >>> 11 === 262143. Actual: ' + (536870911 >>> 11));
+}
+
+
+if (1073741823 >>> 11 !== 524287) {
+ $ERROR('#394: 1073741823 >>> 11 === 524287. Actual: ' + (1073741823 >>> 11));
+}
+
+
+if (2147483647 >>> 11 !== 1048575) {
+ $ERROR('#395: 2147483647 >>> 11 === 1048575. Actual: ' + (2147483647 >>> 11));
+}
+
+
+if (4294967295 >>> 11 !== 2097151) {
+ $ERROR('#396: 4294967295 >>> 11 === 2097151. Actual: ' + (4294967295 >>> 11));
+}
+
+
+if (0 >>> 12 !== 0) {
+ $ERROR('#397: 0 >>> 12 === 0. Actual: ' + (0 >>> 12));
+}
+
+
+if (1 >>> 12 !== 0) {
+ $ERROR('#398: 1 >>> 12 === 0. Actual: ' + (1 >>> 12));
+}
+
+
+if (3 >>> 12 !== 0) {
+ $ERROR('#399: 3 >>> 12 === 0. Actual: ' + (3 >>> 12));
+}
+
+
+if (7 >>> 12 !== 0) {
+ $ERROR('#400: 7 >>> 12 === 0. Actual: ' + (7 >>> 12));
+}
+
+
+if (15 >>> 12 !== 0) {
+ $ERROR('#401: 15 >>> 12 === 0. Actual: ' + (15 >>> 12));
+}
+
+
+if (31 >>> 12 !== 0) {
+ $ERROR('#402: 31 >>> 12 === 0. Actual: ' + (31 >>> 12));
+}
+
+
+if (63 >>> 12 !== 0) {
+ $ERROR('#403: 63 >>> 12 === 0. Actual: ' + (63 >>> 12));
+}
+
+
+if (127 >>> 12 !== 0) {
+ $ERROR('#404: 127 >>> 12 === 0. Actual: ' + (127 >>> 12));
+}
+
+
+if (255 >>> 12 !== 0) {
+ $ERROR('#405: 255 >>> 12 === 0. Actual: ' + (255 >>> 12));
+}
+
+
+if (511 >>> 12 !== 0) {
+ $ERROR('#406: 511 >>> 12 === 0. Actual: ' + (511 >>> 12));
+}
+
+
+if (1023 >>> 12 !== 0) {
+ $ERROR('#407: 1023 >>> 12 === 0. Actual: ' + (1023 >>> 12));
+}
+
+
+if (2047 >>> 12 !== 0) {
+ $ERROR('#408: 2047 >>> 12 === 0. Actual: ' + (2047 >>> 12));
+}
+
+
+if (4095 >>> 12 !== 0) {
+ $ERROR('#409: 4095 >>> 12 === 0. Actual: ' + (4095 >>> 12));
+}
+
+
+if (8191 >>> 12 !== 1) {
+ $ERROR('#410: 8191 >>> 12 === 1. Actual: ' + (8191 >>> 12));
+}
+
+
+if (16383 >>> 12 !== 3) {
+ $ERROR('#411: 16383 >>> 12 === 3. Actual: ' + (16383 >>> 12));
+}
+
+
+if (32767 >>> 12 !== 7) {
+ $ERROR('#412: 32767 >>> 12 === 7. Actual: ' + (32767 >>> 12));
+}
+
+
+if (65535 >>> 12 !== 15) {
+ $ERROR('#413: 65535 >>> 12 === 15. Actual: ' + (65535 >>> 12));
+}
+
+
+if (131071 >>> 12 !== 31) {
+ $ERROR('#414: 131071 >>> 12 === 31. Actual: ' + (131071 >>> 12));
+}
+
+
+if (262143 >>> 12 !== 63) {
+ $ERROR('#415: 262143 >>> 12 === 63. Actual: ' + (262143 >>> 12));
+}
+
+
+if (524287 >>> 12 !== 127) {
+ $ERROR('#416: 524287 >>> 12 === 127. Actual: ' + (524287 >>> 12));
+}
+
+
+if (1048575 >>> 12 !== 255) {
+ $ERROR('#417: 1048575 >>> 12 === 255. Actual: ' + (1048575 >>> 12));
+}
+
+
+if (2097151 >>> 12 !== 511) {
+ $ERROR('#418: 2097151 >>> 12 === 511. Actual: ' + (2097151 >>> 12));
+}
+
+
+if (4194303 >>> 12 !== 1023) {
+ $ERROR('#419: 4194303 >>> 12 === 1023. Actual: ' + (4194303 >>> 12));
+}
+
+
+if (8388607 >>> 12 !== 2047) {
+ $ERROR('#420: 8388607 >>> 12 === 2047. Actual: ' + (8388607 >>> 12));
+}
+
+
+if (16777215 >>> 12 !== 4095) {
+ $ERROR('#421: 16777215 >>> 12 === 4095. Actual: ' + (16777215 >>> 12));
+}
+
+
+if (33554431 >>> 12 !== 8191) {
+ $ERROR('#422: 33554431 >>> 12 === 8191. Actual: ' + (33554431 >>> 12));
+}
+
+
+if (67108863 >>> 12 !== 16383) {
+ $ERROR('#423: 67108863 >>> 12 === 16383. Actual: ' + (67108863 >>> 12));
+}
+
+
+if (134217727 >>> 12 !== 32767) {
+ $ERROR('#424: 134217727 >>> 12 === 32767. Actual: ' + (134217727 >>> 12));
+}
+
+
+if (268435455 >>> 12 !== 65535) {
+ $ERROR('#425: 268435455 >>> 12 === 65535. Actual: ' + (268435455 >>> 12));
+}
+
+
+if (536870911 >>> 12 !== 131071) {
+ $ERROR('#426: 536870911 >>> 12 === 131071. Actual: ' + (536870911 >>> 12));
+}
+
+
+if (1073741823 >>> 12 !== 262143) {
+ $ERROR('#427: 1073741823 >>> 12 === 262143. Actual: ' + (1073741823 >>> 12));
+}
+
+
+if (2147483647 >>> 12 !== 524287) {
+ $ERROR('#428: 2147483647 >>> 12 === 524287. Actual: ' + (2147483647 >>> 12));
+}
+
+
+if (4294967295 >>> 12 !== 1048575) {
+ $ERROR('#429: 4294967295 >>> 12 === 1048575. Actual: ' + (4294967295 >>> 12));
+}
+
+
+if (0 >>> 13 !== 0) {
+ $ERROR('#430: 0 >>> 13 === 0. Actual: ' + (0 >>> 13));
+}
+
+
+if (1 >>> 13 !== 0) {
+ $ERROR('#431: 1 >>> 13 === 0. Actual: ' + (1 >>> 13));
+}
+
+
+if (3 >>> 13 !== 0) {
+ $ERROR('#432: 3 >>> 13 === 0. Actual: ' + (3 >>> 13));
+}
+
+
+if (7 >>> 13 !== 0) {
+ $ERROR('#433: 7 >>> 13 === 0. Actual: ' + (7 >>> 13));
+}
+
+
+if (15 >>> 13 !== 0) {
+ $ERROR('#434: 15 >>> 13 === 0. Actual: ' + (15 >>> 13));
+}
+
+
+if (31 >>> 13 !== 0) {
+ $ERROR('#435: 31 >>> 13 === 0. Actual: ' + (31 >>> 13));
+}
+
+
+if (63 >>> 13 !== 0) {
+ $ERROR('#436: 63 >>> 13 === 0. Actual: ' + (63 >>> 13));
+}
+
+
+if (127 >>> 13 !== 0) {
+ $ERROR('#437: 127 >>> 13 === 0. Actual: ' + (127 >>> 13));
+}
+
+
+if (255 >>> 13 !== 0) {
+ $ERROR('#438: 255 >>> 13 === 0. Actual: ' + (255 >>> 13));
+}
+
+
+if (511 >>> 13 !== 0) {
+ $ERROR('#439: 511 >>> 13 === 0. Actual: ' + (511 >>> 13));
+}
+
+
+if (1023 >>> 13 !== 0) {
+ $ERROR('#440: 1023 >>> 13 === 0. Actual: ' + (1023 >>> 13));
+}
+
+
+if (2047 >>> 13 !== 0) {
+ $ERROR('#441: 2047 >>> 13 === 0. Actual: ' + (2047 >>> 13));
+}
+
+
+if (4095 >>> 13 !== 0) {
+ $ERROR('#442: 4095 >>> 13 === 0. Actual: ' + (4095 >>> 13));
+}
+
+
+if (8191 >>> 13 !== 0) {
+ $ERROR('#443: 8191 >>> 13 === 0. Actual: ' + (8191 >>> 13));
+}
+
+
+if (16383 >>> 13 !== 1) {
+ $ERROR('#444: 16383 >>> 13 === 1. Actual: ' + (16383 >>> 13));
+}
+
+
+if (32767 >>> 13 !== 3) {
+ $ERROR('#445: 32767 >>> 13 === 3. Actual: ' + (32767 >>> 13));
+}
+
+
+if (65535 >>> 13 !== 7) {
+ $ERROR('#446: 65535 >>> 13 === 7. Actual: ' + (65535 >>> 13));
+}
+
+
+if (131071 >>> 13 !== 15) {
+ $ERROR('#447: 131071 >>> 13 === 15. Actual: ' + (131071 >>> 13));
+}
+
+
+if (262143 >>> 13 !== 31) {
+ $ERROR('#448: 262143 >>> 13 === 31. Actual: ' + (262143 >>> 13));
+}
+
+
+if (524287 >>> 13 !== 63) {
+ $ERROR('#449: 524287 >>> 13 === 63. Actual: ' + (524287 >>> 13));
+}
+
+
+if (1048575 >>> 13 !== 127) {
+ $ERROR('#450: 1048575 >>> 13 === 127. Actual: ' + (1048575 >>> 13));
+}
+
+
+if (2097151 >>> 13 !== 255) {
+ $ERROR('#451: 2097151 >>> 13 === 255. Actual: ' + (2097151 >>> 13));
+}
+
+
+if (4194303 >>> 13 !== 511) {
+ $ERROR('#452: 4194303 >>> 13 === 511. Actual: ' + (4194303 >>> 13));
+}
+
+
+if (8388607 >>> 13 !== 1023) {
+ $ERROR('#453: 8388607 >>> 13 === 1023. Actual: ' + (8388607 >>> 13));
+}
+
+
+if (16777215 >>> 13 !== 2047) {
+ $ERROR('#454: 16777215 >>> 13 === 2047. Actual: ' + (16777215 >>> 13));
+}
+
+
+if (33554431 >>> 13 !== 4095) {
+ $ERROR('#455: 33554431 >>> 13 === 4095. Actual: ' + (33554431 >>> 13));
+}
+
+
+if (67108863 >>> 13 !== 8191) {
+ $ERROR('#456: 67108863 >>> 13 === 8191. Actual: ' + (67108863 >>> 13));
+}
+
+
+if (134217727 >>> 13 !== 16383) {
+ $ERROR('#457: 134217727 >>> 13 === 16383. Actual: ' + (134217727 >>> 13));
+}
+
+
+if (268435455 >>> 13 !== 32767) {
+ $ERROR('#458: 268435455 >>> 13 === 32767. Actual: ' + (268435455 >>> 13));
+}
+
+
+if (536870911 >>> 13 !== 65535) {
+ $ERROR('#459: 536870911 >>> 13 === 65535. Actual: ' + (536870911 >>> 13));
+}
+
+
+if (1073741823 >>> 13 !== 131071) {
+ $ERROR('#460: 1073741823 >>> 13 === 131071. Actual: ' + (1073741823 >>> 13));
+}
+
+
+if (2147483647 >>> 13 !== 262143) {
+ $ERROR('#461: 2147483647 >>> 13 === 262143. Actual: ' + (2147483647 >>> 13));
+}
+
+
+if (4294967295 >>> 13 !== 524287) {
+ $ERROR('#462: 4294967295 >>> 13 === 524287. Actual: ' + (4294967295 >>> 13));
+}
+
+
+if (0 >>> 14 !== 0) {
+ $ERROR('#463: 0 >>> 14 === 0. Actual: ' + (0 >>> 14));
+}
+
+
+if (1 >>> 14 !== 0) {
+ $ERROR('#464: 1 >>> 14 === 0. Actual: ' + (1 >>> 14));
+}
+
+
+if (3 >>> 14 !== 0) {
+ $ERROR('#465: 3 >>> 14 === 0. Actual: ' + (3 >>> 14));
+}
+
+
+if (7 >>> 14 !== 0) {
+ $ERROR('#466: 7 >>> 14 === 0. Actual: ' + (7 >>> 14));
+}
+
+
+if (15 >>> 14 !== 0) {
+ $ERROR('#467: 15 >>> 14 === 0. Actual: ' + (15 >>> 14));
+}
+
+
+if (31 >>> 14 !== 0) {
+ $ERROR('#468: 31 >>> 14 === 0. Actual: ' + (31 >>> 14));
+}
+
+
+if (63 >>> 14 !== 0) {
+ $ERROR('#469: 63 >>> 14 === 0. Actual: ' + (63 >>> 14));
+}
+
+
+if (127 >>> 14 !== 0) {
+ $ERROR('#470: 127 >>> 14 === 0. Actual: ' + (127 >>> 14));
+}
+
+
+if (255 >>> 14 !== 0) {
+ $ERROR('#471: 255 >>> 14 === 0. Actual: ' + (255 >>> 14));
+}
+
+
+if (511 >>> 14 !== 0) {
+ $ERROR('#472: 511 >>> 14 === 0. Actual: ' + (511 >>> 14));
+}
+
+
+if (1023 >>> 14 !== 0) {
+ $ERROR('#473: 1023 >>> 14 === 0. Actual: ' + (1023 >>> 14));
+}
+
+
+if (2047 >>> 14 !== 0) {
+ $ERROR('#474: 2047 >>> 14 === 0. Actual: ' + (2047 >>> 14));
+}
+
+
+if (4095 >>> 14 !== 0) {
+ $ERROR('#475: 4095 >>> 14 === 0. Actual: ' + (4095 >>> 14));
+}
+
+
+if (8191 >>> 14 !== 0) {
+ $ERROR('#476: 8191 >>> 14 === 0. Actual: ' + (8191 >>> 14));
+}
+
+
+if (16383 >>> 14 !== 0) {
+ $ERROR('#477: 16383 >>> 14 === 0. Actual: ' + (16383 >>> 14));
+}
+
+
+if (32767 >>> 14 !== 1) {
+ $ERROR('#478: 32767 >>> 14 === 1. Actual: ' + (32767 >>> 14));
+}
+
+
+if (65535 >>> 14 !== 3) {
+ $ERROR('#479: 65535 >>> 14 === 3. Actual: ' + (65535 >>> 14));
+}
+
+
+if (131071 >>> 14 !== 7) {
+ $ERROR('#480: 131071 >>> 14 === 7. Actual: ' + (131071 >>> 14));
+}
+
+
+if (262143 >>> 14 !== 15) {
+ $ERROR('#481: 262143 >>> 14 === 15. Actual: ' + (262143 >>> 14));
+}
+
+
+if (524287 >>> 14 !== 31) {
+ $ERROR('#482: 524287 >>> 14 === 31. Actual: ' + (524287 >>> 14));
+}
+
+
+if (1048575 >>> 14 !== 63) {
+ $ERROR('#483: 1048575 >>> 14 === 63. Actual: ' + (1048575 >>> 14));
+}
+
+
+if (2097151 >>> 14 !== 127) {
+ $ERROR('#484: 2097151 >>> 14 === 127. Actual: ' + (2097151 >>> 14));
+}
+
+
+if (4194303 >>> 14 !== 255) {
+ $ERROR('#485: 4194303 >>> 14 === 255. Actual: ' + (4194303 >>> 14));
+}
+
+
+if (8388607 >>> 14 !== 511) {
+ $ERROR('#486: 8388607 >>> 14 === 511. Actual: ' + (8388607 >>> 14));
+}
+
+
+if (16777215 >>> 14 !== 1023) {
+ $ERROR('#487: 16777215 >>> 14 === 1023. Actual: ' + (16777215 >>> 14));
+}
+
+
+if (33554431 >>> 14 !== 2047) {
+ $ERROR('#488: 33554431 >>> 14 === 2047. Actual: ' + (33554431 >>> 14));
+}
+
+
+if (67108863 >>> 14 !== 4095) {
+ $ERROR('#489: 67108863 >>> 14 === 4095. Actual: ' + (67108863 >>> 14));
+}
+
+
+if (134217727 >>> 14 !== 8191) {
+ $ERROR('#490: 134217727 >>> 14 === 8191. Actual: ' + (134217727 >>> 14));
+}
+
+
+if (268435455 >>> 14 !== 16383) {
+ $ERROR('#491: 268435455 >>> 14 === 16383. Actual: ' + (268435455 >>> 14));
+}
+
+
+if (536870911 >>> 14 !== 32767) {
+ $ERROR('#492: 536870911 >>> 14 === 32767. Actual: ' + (536870911 >>> 14));
+}
+
+
+if (1073741823 >>> 14 !== 65535) {
+ $ERROR('#493: 1073741823 >>> 14 === 65535. Actual: ' + (1073741823 >>> 14));
+}
+
+
+if (2147483647 >>> 14 !== 131071) {
+ $ERROR('#494: 2147483647 >>> 14 === 131071. Actual: ' + (2147483647 >>> 14));
+}
+
+
+if (4294967295 >>> 14 !== 262143) {
+ $ERROR('#495: 4294967295 >>> 14 === 262143. Actual: ' + (4294967295 >>> 14));
+}
+
+
+if (0 >>> 15 !== 0) {
+ $ERROR('#496: 0 >>> 15 === 0. Actual: ' + (0 >>> 15));
+}
+
+
+if (1 >>> 15 !== 0) {
+ $ERROR('#497: 1 >>> 15 === 0. Actual: ' + (1 >>> 15));
+}
+
+
+if (3 >>> 15 !== 0) {
+ $ERROR('#498: 3 >>> 15 === 0. Actual: ' + (3 >>> 15));
+}
+
+
+if (7 >>> 15 !== 0) {
+ $ERROR('#499: 7 >>> 15 === 0. Actual: ' + (7 >>> 15));
+}
+
+
+if (15 >>> 15 !== 0) {
+ $ERROR('#500: 15 >>> 15 === 0. Actual: ' + (15 >>> 15));
+}
+
+
+if (31 >>> 15 !== 0) {
+ $ERROR('#501: 31 >>> 15 === 0. Actual: ' + (31 >>> 15));
+}
+
+
+if (63 >>> 15 !== 0) {
+ $ERROR('#502: 63 >>> 15 === 0. Actual: ' + (63 >>> 15));
+}
+
+
+if (127 >>> 15 !== 0) {
+ $ERROR('#503: 127 >>> 15 === 0. Actual: ' + (127 >>> 15));
+}
+
+
+if (255 >>> 15 !== 0) {
+ $ERROR('#504: 255 >>> 15 === 0. Actual: ' + (255 >>> 15));
+}
+
+
+if (511 >>> 15 !== 0) {
+ $ERROR('#505: 511 >>> 15 === 0. Actual: ' + (511 >>> 15));
+}
+
+
+if (1023 >>> 15 !== 0) {
+ $ERROR('#506: 1023 >>> 15 === 0. Actual: ' + (1023 >>> 15));
+}
+
+
+if (2047 >>> 15 !== 0) {
+ $ERROR('#507: 2047 >>> 15 === 0. Actual: ' + (2047 >>> 15));
+}
+
+
+if (4095 >>> 15 !== 0) {
+ $ERROR('#508: 4095 >>> 15 === 0. Actual: ' + (4095 >>> 15));
+}
+
+
+if (8191 >>> 15 !== 0) {
+ $ERROR('#509: 8191 >>> 15 === 0. Actual: ' + (8191 >>> 15));
+}
+
+
+if (16383 >>> 15 !== 0) {
+ $ERROR('#510: 16383 >>> 15 === 0. Actual: ' + (16383 >>> 15));
+}
+
+
+if (32767 >>> 15 !== 0) {
+ $ERROR('#511: 32767 >>> 15 === 0. Actual: ' + (32767 >>> 15));
+}
+
+
+if (65535 >>> 15 !== 1) {
+ $ERROR('#512: 65535 >>> 15 === 1. Actual: ' + (65535 >>> 15));
+}
+
+
+if (131071 >>> 15 !== 3) {
+ $ERROR('#513: 131071 >>> 15 === 3. Actual: ' + (131071 >>> 15));
+}
+
+
+if (262143 >>> 15 !== 7) {
+ $ERROR('#514: 262143 >>> 15 === 7. Actual: ' + (262143 >>> 15));
+}
+
+
+if (524287 >>> 15 !== 15) {
+ $ERROR('#515: 524287 >>> 15 === 15. Actual: ' + (524287 >>> 15));
+}
+
+
+if (1048575 >>> 15 !== 31) {
+ $ERROR('#516: 1048575 >>> 15 === 31. Actual: ' + (1048575 >>> 15));
+}
+
+
+if (2097151 >>> 15 !== 63) {
+ $ERROR('#517: 2097151 >>> 15 === 63. Actual: ' + (2097151 >>> 15));
+}
+
+
+if (4194303 >>> 15 !== 127) {
+ $ERROR('#518: 4194303 >>> 15 === 127. Actual: ' + (4194303 >>> 15));
+}
+
+
+if (8388607 >>> 15 !== 255) {
+ $ERROR('#519: 8388607 >>> 15 === 255. Actual: ' + (8388607 >>> 15));
+}
+
+
+if (16777215 >>> 15 !== 511) {
+ $ERROR('#520: 16777215 >>> 15 === 511. Actual: ' + (16777215 >>> 15));
+}
+
+
+if (33554431 >>> 15 !== 1023) {
+ $ERROR('#521: 33554431 >>> 15 === 1023. Actual: ' + (33554431 >>> 15));
+}
+
+
+if (67108863 >>> 15 !== 2047) {
+ $ERROR('#522: 67108863 >>> 15 === 2047. Actual: ' + (67108863 >>> 15));
+}
+
+
+if (134217727 >>> 15 !== 4095) {
+ $ERROR('#523: 134217727 >>> 15 === 4095. Actual: ' + (134217727 >>> 15));
+}
+
+
+if (268435455 >>> 15 !== 8191) {
+ $ERROR('#524: 268435455 >>> 15 === 8191. Actual: ' + (268435455 >>> 15));
+}
+
+
+if (536870911 >>> 15 !== 16383) {
+ $ERROR('#525: 536870911 >>> 15 === 16383. Actual: ' + (536870911 >>> 15));
+}
+
+
+if (1073741823 >>> 15 !== 32767) {
+ $ERROR('#526: 1073741823 >>> 15 === 32767. Actual: ' + (1073741823 >>> 15));
+}
+
+
+if (2147483647 >>> 15 !== 65535) {
+ $ERROR('#527: 2147483647 >>> 15 === 65535. Actual: ' + (2147483647 >>> 15));
+}
+
+
+if (4294967295 >>> 15 !== 131071) {
+ $ERROR('#528: 4294967295 >>> 15 === 131071. Actual: ' + (4294967295 >>> 15));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T4.js
new file mode 100644
index 000000000..ae9e8f18c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A4_T4.js
@@ -0,0 +1,2650 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A4_T4;
+ * @section: 11.7.3;
+ * @assertion: Check operator x >>> y in distinct points;
+ * @description: ShiftExpression = 2^n - 1, n = 16...31;
+ */
+
+//CHECK
+
+if (0 >>> 16 !== 0) {
+ $ERROR('#529: 0 >>> 16 === 0. Actual: ' + (0 >>> 16));
+}
+
+
+if (1 >>> 16 !== 0) {
+ $ERROR('#530: 1 >>> 16 === 0. Actual: ' + (1 >>> 16));
+}
+
+
+if (3 >>> 16 !== 0) {
+ $ERROR('#531: 3 >>> 16 === 0. Actual: ' + (3 >>> 16));
+}
+
+
+if (7 >>> 16 !== 0) {
+ $ERROR('#532: 7 >>> 16 === 0. Actual: ' + (7 >>> 16));
+}
+
+
+if (15 >>> 16 !== 0) {
+ $ERROR('#533: 15 >>> 16 === 0. Actual: ' + (15 >>> 16));
+}
+
+
+if (31 >>> 16 !== 0) {
+ $ERROR('#534: 31 >>> 16 === 0. Actual: ' + (31 >>> 16));
+}
+
+
+if (63 >>> 16 !== 0) {
+ $ERROR('#535: 63 >>> 16 === 0. Actual: ' + (63 >>> 16));
+}
+
+
+if (127 >>> 16 !== 0) {
+ $ERROR('#536: 127 >>> 16 === 0. Actual: ' + (127 >>> 16));
+}
+
+
+if (255 >>> 16 !== 0) {
+ $ERROR('#537: 255 >>> 16 === 0. Actual: ' + (255 >>> 16));
+}
+
+
+if (511 >>> 16 !== 0) {
+ $ERROR('#538: 511 >>> 16 === 0. Actual: ' + (511 >>> 16));
+}
+
+
+if (1023 >>> 16 !== 0) {
+ $ERROR('#539: 1023 >>> 16 === 0. Actual: ' + (1023 >>> 16));
+}
+
+
+if (2047 >>> 16 !== 0) {
+ $ERROR('#540: 2047 >>> 16 === 0. Actual: ' + (2047 >>> 16));
+}
+
+
+if (4095 >>> 16 !== 0) {
+ $ERROR('#541: 4095 >>> 16 === 0. Actual: ' + (4095 >>> 16));
+}
+
+
+if (8191 >>> 16 !== 0) {
+ $ERROR('#542: 8191 >>> 16 === 0. Actual: ' + (8191 >>> 16));
+}
+
+
+if (16383 >>> 16 !== 0) {
+ $ERROR('#543: 16383 >>> 16 === 0. Actual: ' + (16383 >>> 16));
+}
+
+
+if (32767 >>> 16 !== 0) {
+ $ERROR('#544: 32767 >>> 16 === 0. Actual: ' + (32767 >>> 16));
+}
+
+
+if (65535 >>> 16 !== 0) {
+ $ERROR('#545: 65535 >>> 16 === 0. Actual: ' + (65535 >>> 16));
+}
+
+
+if (131071 >>> 16 !== 1) {
+ $ERROR('#546: 131071 >>> 16 === 1. Actual: ' + (131071 >>> 16));
+}
+
+
+if (262143 >>> 16 !== 3) {
+ $ERROR('#547: 262143 >>> 16 === 3. Actual: ' + (262143 >>> 16));
+}
+
+
+if (524287 >>> 16 !== 7) {
+ $ERROR('#548: 524287 >>> 16 === 7. Actual: ' + (524287 >>> 16));
+}
+
+
+if (1048575 >>> 16 !== 15) {
+ $ERROR('#549: 1048575 >>> 16 === 15. Actual: ' + (1048575 >>> 16));
+}
+
+
+if (2097151 >>> 16 !== 31) {
+ $ERROR('#550: 2097151 >>> 16 === 31. Actual: ' + (2097151 >>> 16));
+}
+
+
+if (4194303 >>> 16 !== 63) {
+ $ERROR('#551: 4194303 >>> 16 === 63. Actual: ' + (4194303 >>> 16));
+}
+
+
+if (8388607 >>> 16 !== 127) {
+ $ERROR('#552: 8388607 >>> 16 === 127. Actual: ' + (8388607 >>> 16));
+}
+
+
+if (16777215 >>> 16 !== 255) {
+ $ERROR('#553: 16777215 >>> 16 === 255. Actual: ' + (16777215 >>> 16));
+}
+
+
+if (33554431 >>> 16 !== 511) {
+ $ERROR('#554: 33554431 >>> 16 === 511. Actual: ' + (33554431 >>> 16));
+}
+
+
+if (67108863 >>> 16 !== 1023) {
+ $ERROR('#555: 67108863 >>> 16 === 1023. Actual: ' + (67108863 >>> 16));
+}
+
+
+if (134217727 >>> 16 !== 2047) {
+ $ERROR('#556: 134217727 >>> 16 === 2047. Actual: ' + (134217727 >>> 16));
+}
+
+
+if (268435455 >>> 16 !== 4095) {
+ $ERROR('#557: 268435455 >>> 16 === 4095. Actual: ' + (268435455 >>> 16));
+}
+
+
+if (536870911 >>> 16 !== 8191) {
+ $ERROR('#558: 536870911 >>> 16 === 8191. Actual: ' + (536870911 >>> 16));
+}
+
+
+if (1073741823 >>> 16 !== 16383) {
+ $ERROR('#559: 1073741823 >>> 16 === 16383. Actual: ' + (1073741823 >>> 16));
+}
+
+
+if (2147483647 >>> 16 !== 32767) {
+ $ERROR('#560: 2147483647 >>> 16 === 32767. Actual: ' + (2147483647 >>> 16));
+}
+
+
+if (4294967295 >>> 16 !== 65535) {
+ $ERROR('#561: 4294967295 >>> 16 === 65535. Actual: ' + (4294967295 >>> 16));
+}
+
+
+if (0 >>> 17 !== 0) {
+ $ERROR('#562: 0 >>> 17 === 0. Actual: ' + (0 >>> 17));
+}
+
+
+if (1 >>> 17 !== 0) {
+ $ERROR('#563: 1 >>> 17 === 0. Actual: ' + (1 >>> 17));
+}
+
+
+if (3 >>> 17 !== 0) {
+ $ERROR('#564: 3 >>> 17 === 0. Actual: ' + (3 >>> 17));
+}
+
+
+if (7 >>> 17 !== 0) {
+ $ERROR('#565: 7 >>> 17 === 0. Actual: ' + (7 >>> 17));
+}
+
+
+if (15 >>> 17 !== 0) {
+ $ERROR('#566: 15 >>> 17 === 0. Actual: ' + (15 >>> 17));
+}
+
+
+if (31 >>> 17 !== 0) {
+ $ERROR('#567: 31 >>> 17 === 0. Actual: ' + (31 >>> 17));
+}
+
+
+if (63 >>> 17 !== 0) {
+ $ERROR('#568: 63 >>> 17 === 0. Actual: ' + (63 >>> 17));
+}
+
+
+if (127 >>> 17 !== 0) {
+ $ERROR('#569: 127 >>> 17 === 0. Actual: ' + (127 >>> 17));
+}
+
+
+if (255 >>> 17 !== 0) {
+ $ERROR('#570: 255 >>> 17 === 0. Actual: ' + (255 >>> 17));
+}
+
+
+if (511 >>> 17 !== 0) {
+ $ERROR('#571: 511 >>> 17 === 0. Actual: ' + (511 >>> 17));
+}
+
+
+if (1023 >>> 17 !== 0) {
+ $ERROR('#572: 1023 >>> 17 === 0. Actual: ' + (1023 >>> 17));
+}
+
+
+if (2047 >>> 17 !== 0) {
+ $ERROR('#573: 2047 >>> 17 === 0. Actual: ' + (2047 >>> 17));
+}
+
+
+if (4095 >>> 17 !== 0) {
+ $ERROR('#574: 4095 >>> 17 === 0. Actual: ' + (4095 >>> 17));
+}
+
+
+if (8191 >>> 17 !== 0) {
+ $ERROR('#575: 8191 >>> 17 === 0. Actual: ' + (8191 >>> 17));
+}
+
+
+if (16383 >>> 17 !== 0) {
+ $ERROR('#576: 16383 >>> 17 === 0. Actual: ' + (16383 >>> 17));
+}
+
+
+if (32767 >>> 17 !== 0) {
+ $ERROR('#577: 32767 >>> 17 === 0. Actual: ' + (32767 >>> 17));
+}
+
+
+if (65535 >>> 17 !== 0) {
+ $ERROR('#578: 65535 >>> 17 === 0. Actual: ' + (65535 >>> 17));
+}
+
+
+if (131071 >>> 17 !== 0) {
+ $ERROR('#579: 131071 >>> 17 === 0. Actual: ' + (131071 >>> 17));
+}
+
+
+if (262143 >>> 17 !== 1) {
+ $ERROR('#580: 262143 >>> 17 === 1. Actual: ' + (262143 >>> 17));
+}
+
+
+if (524287 >>> 17 !== 3) {
+ $ERROR('#581: 524287 >>> 17 === 3. Actual: ' + (524287 >>> 17));
+}
+
+
+if (1048575 >>> 17 !== 7) {
+ $ERROR('#582: 1048575 >>> 17 === 7. Actual: ' + (1048575 >>> 17));
+}
+
+
+if (2097151 >>> 17 !== 15) {
+ $ERROR('#583: 2097151 >>> 17 === 15. Actual: ' + (2097151 >>> 17));
+}
+
+
+if (4194303 >>> 17 !== 31) {
+ $ERROR('#584: 4194303 >>> 17 === 31. Actual: ' + (4194303 >>> 17));
+}
+
+
+if (8388607 >>> 17 !== 63) {
+ $ERROR('#585: 8388607 >>> 17 === 63. Actual: ' + (8388607 >>> 17));
+}
+
+
+if (16777215 >>> 17 !== 127) {
+ $ERROR('#586: 16777215 >>> 17 === 127. Actual: ' + (16777215 >>> 17));
+}
+
+
+if (33554431 >>> 17 !== 255) {
+ $ERROR('#587: 33554431 >>> 17 === 255. Actual: ' + (33554431 >>> 17));
+}
+
+
+if (67108863 >>> 17 !== 511) {
+ $ERROR('#588: 67108863 >>> 17 === 511. Actual: ' + (67108863 >>> 17));
+}
+
+
+if (134217727 >>> 17 !== 1023) {
+ $ERROR('#589: 134217727 >>> 17 === 1023. Actual: ' + (134217727 >>> 17));
+}
+
+
+if (268435455 >>> 17 !== 2047) {
+ $ERROR('#590: 268435455 >>> 17 === 2047. Actual: ' + (268435455 >>> 17));
+}
+
+
+if (536870911 >>> 17 !== 4095) {
+ $ERROR('#591: 536870911 >>> 17 === 4095. Actual: ' + (536870911 >>> 17));
+}
+
+
+if (1073741823 >>> 17 !== 8191) {
+ $ERROR('#592: 1073741823 >>> 17 === 8191. Actual: ' + (1073741823 >>> 17));
+}
+
+
+if (2147483647 >>> 17 !== 16383) {
+ $ERROR('#593: 2147483647 >>> 17 === 16383. Actual: ' + (2147483647 >>> 17));
+}
+
+
+if (4294967295 >>> 17 !== 32767) {
+ $ERROR('#594: 4294967295 >>> 17 === 32767. Actual: ' + (4294967295 >>> 17));
+}
+
+
+if (0 >>> 18 !== 0) {
+ $ERROR('#595: 0 >>> 18 === 0. Actual: ' + (0 >>> 18));
+}
+
+
+if (1 >>> 18 !== 0) {
+ $ERROR('#596: 1 >>> 18 === 0. Actual: ' + (1 >>> 18));
+}
+
+
+if (3 >>> 18 !== 0) {
+ $ERROR('#597: 3 >>> 18 === 0. Actual: ' + (3 >>> 18));
+}
+
+
+if (7 >>> 18 !== 0) {
+ $ERROR('#598: 7 >>> 18 === 0. Actual: ' + (7 >>> 18));
+}
+
+
+if (15 >>> 18 !== 0) {
+ $ERROR('#599: 15 >>> 18 === 0. Actual: ' + (15 >>> 18));
+}
+
+
+if (31 >>> 18 !== 0) {
+ $ERROR('#600: 31 >>> 18 === 0. Actual: ' + (31 >>> 18));
+}
+
+
+if (63 >>> 18 !== 0) {
+ $ERROR('#601: 63 >>> 18 === 0. Actual: ' + (63 >>> 18));
+}
+
+
+if (127 >>> 18 !== 0) {
+ $ERROR('#602: 127 >>> 18 === 0. Actual: ' + (127 >>> 18));
+}
+
+
+if (255 >>> 18 !== 0) {
+ $ERROR('#603: 255 >>> 18 === 0. Actual: ' + (255 >>> 18));
+}
+
+
+if (511 >>> 18 !== 0) {
+ $ERROR('#604: 511 >>> 18 === 0. Actual: ' + (511 >>> 18));
+}
+
+
+if (1023 >>> 18 !== 0) {
+ $ERROR('#605: 1023 >>> 18 === 0. Actual: ' + (1023 >>> 18));
+}
+
+
+if (2047 >>> 18 !== 0) {
+ $ERROR('#606: 2047 >>> 18 === 0. Actual: ' + (2047 >>> 18));
+}
+
+
+if (4095 >>> 18 !== 0) {
+ $ERROR('#607: 4095 >>> 18 === 0. Actual: ' + (4095 >>> 18));
+}
+
+
+if (8191 >>> 18 !== 0) {
+ $ERROR('#608: 8191 >>> 18 === 0. Actual: ' + (8191 >>> 18));
+}
+
+
+if (16383 >>> 18 !== 0) {
+ $ERROR('#609: 16383 >>> 18 === 0. Actual: ' + (16383 >>> 18));
+}
+
+
+if (32767 >>> 18 !== 0) {
+ $ERROR('#610: 32767 >>> 18 === 0. Actual: ' + (32767 >>> 18));
+}
+
+
+if (65535 >>> 18 !== 0) {
+ $ERROR('#611: 65535 >>> 18 === 0. Actual: ' + (65535 >>> 18));
+}
+
+
+if (131071 >>> 18 !== 0) {
+ $ERROR('#612: 131071 >>> 18 === 0. Actual: ' + (131071 >>> 18));
+}
+
+
+if (262143 >>> 18 !== 0) {
+ $ERROR('#613: 262143 >>> 18 === 0. Actual: ' + (262143 >>> 18));
+}
+
+
+if (524287 >>> 18 !== 1) {
+ $ERROR('#614: 524287 >>> 18 === 1. Actual: ' + (524287 >>> 18));
+}
+
+
+if (1048575 >>> 18 !== 3) {
+ $ERROR('#615: 1048575 >>> 18 === 3. Actual: ' + (1048575 >>> 18));
+}
+
+
+if (2097151 >>> 18 !== 7) {
+ $ERROR('#616: 2097151 >>> 18 === 7. Actual: ' + (2097151 >>> 18));
+}
+
+
+if (4194303 >>> 18 !== 15) {
+ $ERROR('#617: 4194303 >>> 18 === 15. Actual: ' + (4194303 >>> 18));
+}
+
+
+if (8388607 >>> 18 !== 31) {
+ $ERROR('#618: 8388607 >>> 18 === 31. Actual: ' + (8388607 >>> 18));
+}
+
+
+if (16777215 >>> 18 !== 63) {
+ $ERROR('#619: 16777215 >>> 18 === 63. Actual: ' + (16777215 >>> 18));
+}
+
+
+if (33554431 >>> 18 !== 127) {
+ $ERROR('#620: 33554431 >>> 18 === 127. Actual: ' + (33554431 >>> 18));
+}
+
+
+if (67108863 >>> 18 !== 255) {
+ $ERROR('#621: 67108863 >>> 18 === 255. Actual: ' + (67108863 >>> 18));
+}
+
+
+if (134217727 >>> 18 !== 511) {
+ $ERROR('#622: 134217727 >>> 18 === 511. Actual: ' + (134217727 >>> 18));
+}
+
+
+if (268435455 >>> 18 !== 1023) {
+ $ERROR('#623: 268435455 >>> 18 === 1023. Actual: ' + (268435455 >>> 18));
+}
+
+
+if (536870911 >>> 18 !== 2047) {
+ $ERROR('#624: 536870911 >>> 18 === 2047. Actual: ' + (536870911 >>> 18));
+}
+
+
+if (1073741823 >>> 18 !== 4095) {
+ $ERROR('#625: 1073741823 >>> 18 === 4095. Actual: ' + (1073741823 >>> 18));
+}
+
+
+if (2147483647 >>> 18 !== 8191) {
+ $ERROR('#626: 2147483647 >>> 18 === 8191. Actual: ' + (2147483647 >>> 18));
+}
+
+
+if (4294967295 >>> 18 !== 16383) {
+ $ERROR('#627: 4294967295 >>> 18 === 16383. Actual: ' + (4294967295 >>> 18));
+}
+
+
+if (0 >>> 19 !== 0) {
+ $ERROR('#628: 0 >>> 19 === 0. Actual: ' + (0 >>> 19));
+}
+
+
+if (1 >>> 19 !== 0) {
+ $ERROR('#629: 1 >>> 19 === 0. Actual: ' + (1 >>> 19));
+}
+
+
+if (3 >>> 19 !== 0) {
+ $ERROR('#630: 3 >>> 19 === 0. Actual: ' + (3 >>> 19));
+}
+
+
+if (7 >>> 19 !== 0) {
+ $ERROR('#631: 7 >>> 19 === 0. Actual: ' + (7 >>> 19));
+}
+
+
+if (15 >>> 19 !== 0) {
+ $ERROR('#632: 15 >>> 19 === 0. Actual: ' + (15 >>> 19));
+}
+
+
+if (31 >>> 19 !== 0) {
+ $ERROR('#633: 31 >>> 19 === 0. Actual: ' + (31 >>> 19));
+}
+
+
+if (63 >>> 19 !== 0) {
+ $ERROR('#634: 63 >>> 19 === 0. Actual: ' + (63 >>> 19));
+}
+
+
+if (127 >>> 19 !== 0) {
+ $ERROR('#635: 127 >>> 19 === 0. Actual: ' + (127 >>> 19));
+}
+
+
+if (255 >>> 19 !== 0) {
+ $ERROR('#636: 255 >>> 19 === 0. Actual: ' + (255 >>> 19));
+}
+
+
+if (511 >>> 19 !== 0) {
+ $ERROR('#637: 511 >>> 19 === 0. Actual: ' + (511 >>> 19));
+}
+
+
+if (1023 >>> 19 !== 0) {
+ $ERROR('#638: 1023 >>> 19 === 0. Actual: ' + (1023 >>> 19));
+}
+
+
+if (2047 >>> 19 !== 0) {
+ $ERROR('#639: 2047 >>> 19 === 0. Actual: ' + (2047 >>> 19));
+}
+
+
+if (4095 >>> 19 !== 0) {
+ $ERROR('#640: 4095 >>> 19 === 0. Actual: ' + (4095 >>> 19));
+}
+
+
+if (8191 >>> 19 !== 0) {
+ $ERROR('#641: 8191 >>> 19 === 0. Actual: ' + (8191 >>> 19));
+}
+
+
+if (16383 >>> 19 !== 0) {
+ $ERROR('#642: 16383 >>> 19 === 0. Actual: ' + (16383 >>> 19));
+}
+
+
+if (32767 >>> 19 !== 0) {
+ $ERROR('#643: 32767 >>> 19 === 0. Actual: ' + (32767 >>> 19));
+}
+
+
+if (65535 >>> 19 !== 0) {
+ $ERROR('#644: 65535 >>> 19 === 0. Actual: ' + (65535 >>> 19));
+}
+
+
+if (131071 >>> 19 !== 0) {
+ $ERROR('#645: 131071 >>> 19 === 0. Actual: ' + (131071 >>> 19));
+}
+
+
+if (262143 >>> 19 !== 0) {
+ $ERROR('#646: 262143 >>> 19 === 0. Actual: ' + (262143 >>> 19));
+}
+
+
+if (524287 >>> 19 !== 0) {
+ $ERROR('#647: 524287 >>> 19 === 0. Actual: ' + (524287 >>> 19));
+}
+
+
+if (1048575 >>> 19 !== 1) {
+ $ERROR('#648: 1048575 >>> 19 === 1. Actual: ' + (1048575 >>> 19));
+}
+
+
+if (2097151 >>> 19 !== 3) {
+ $ERROR('#649: 2097151 >>> 19 === 3. Actual: ' + (2097151 >>> 19));
+}
+
+
+if (4194303 >>> 19 !== 7) {
+ $ERROR('#650: 4194303 >>> 19 === 7. Actual: ' + (4194303 >>> 19));
+}
+
+
+if (8388607 >>> 19 !== 15) {
+ $ERROR('#651: 8388607 >>> 19 === 15. Actual: ' + (8388607 >>> 19));
+}
+
+
+if (16777215 >>> 19 !== 31) {
+ $ERROR('#652: 16777215 >>> 19 === 31. Actual: ' + (16777215 >>> 19));
+}
+
+
+if (33554431 >>> 19 !== 63) {
+ $ERROR('#653: 33554431 >>> 19 === 63. Actual: ' + (33554431 >>> 19));
+}
+
+
+if (67108863 >>> 19 !== 127) {
+ $ERROR('#654: 67108863 >>> 19 === 127. Actual: ' + (67108863 >>> 19));
+}
+
+
+if (134217727 >>> 19 !== 255) {
+ $ERROR('#655: 134217727 >>> 19 === 255. Actual: ' + (134217727 >>> 19));
+}
+
+
+if (268435455 >>> 19 !== 511) {
+ $ERROR('#656: 268435455 >>> 19 === 511. Actual: ' + (268435455 >>> 19));
+}
+
+
+if (536870911 >>> 19 !== 1023) {
+ $ERROR('#657: 536870911 >>> 19 === 1023. Actual: ' + (536870911 >>> 19));
+}
+
+
+if (1073741823 >>> 19 !== 2047) {
+ $ERROR('#658: 1073741823 >>> 19 === 2047. Actual: ' + (1073741823 >>> 19));
+}
+
+
+if (2147483647 >>> 19 !== 4095) {
+ $ERROR('#659: 2147483647 >>> 19 === 4095. Actual: ' + (2147483647 >>> 19));
+}
+
+
+if (4294967295 >>> 19 !== 8191) {
+ $ERROR('#660: 4294967295 >>> 19 === 8191. Actual: ' + (4294967295 >>> 19));
+}
+
+
+if (0 >>> 20 !== 0) {
+ $ERROR('#661: 0 >>> 20 === 0. Actual: ' + (0 >>> 20));
+}
+
+
+if (1 >>> 20 !== 0) {
+ $ERROR('#662: 1 >>> 20 === 0. Actual: ' + (1 >>> 20));
+}
+
+
+if (3 >>> 20 !== 0) {
+ $ERROR('#663: 3 >>> 20 === 0. Actual: ' + (3 >>> 20));
+}
+
+
+if (7 >>> 20 !== 0) {
+ $ERROR('#664: 7 >>> 20 === 0. Actual: ' + (7 >>> 20));
+}
+
+
+if (15 >>> 20 !== 0) {
+ $ERROR('#665: 15 >>> 20 === 0. Actual: ' + (15 >>> 20));
+}
+
+
+if (31 >>> 20 !== 0) {
+ $ERROR('#666: 31 >>> 20 === 0. Actual: ' + (31 >>> 20));
+}
+
+
+if (63 >>> 20 !== 0) {
+ $ERROR('#667: 63 >>> 20 === 0. Actual: ' + (63 >>> 20));
+}
+
+
+if (127 >>> 20 !== 0) {
+ $ERROR('#668: 127 >>> 20 === 0. Actual: ' + (127 >>> 20));
+}
+
+
+if (255 >>> 20 !== 0) {
+ $ERROR('#669: 255 >>> 20 === 0. Actual: ' + (255 >>> 20));
+}
+
+
+if (511 >>> 20 !== 0) {
+ $ERROR('#670: 511 >>> 20 === 0. Actual: ' + (511 >>> 20));
+}
+
+
+if (1023 >>> 20 !== 0) {
+ $ERROR('#671: 1023 >>> 20 === 0. Actual: ' + (1023 >>> 20));
+}
+
+
+if (2047 >>> 20 !== 0) {
+ $ERROR('#672: 2047 >>> 20 === 0. Actual: ' + (2047 >>> 20));
+}
+
+
+if (4095 >>> 20 !== 0) {
+ $ERROR('#673: 4095 >>> 20 === 0. Actual: ' + (4095 >>> 20));
+}
+
+
+if (8191 >>> 20 !== 0) {
+ $ERROR('#674: 8191 >>> 20 === 0. Actual: ' + (8191 >>> 20));
+}
+
+
+if (16383 >>> 20 !== 0) {
+ $ERROR('#675: 16383 >>> 20 === 0. Actual: ' + (16383 >>> 20));
+}
+
+
+if (32767 >>> 20 !== 0) {
+ $ERROR('#676: 32767 >>> 20 === 0. Actual: ' + (32767 >>> 20));
+}
+
+
+if (65535 >>> 20 !== 0) {
+ $ERROR('#677: 65535 >>> 20 === 0. Actual: ' + (65535 >>> 20));
+}
+
+
+if (131071 >>> 20 !== 0) {
+ $ERROR('#678: 131071 >>> 20 === 0. Actual: ' + (131071 >>> 20));
+}
+
+
+if (262143 >>> 20 !== 0) {
+ $ERROR('#679: 262143 >>> 20 === 0. Actual: ' + (262143 >>> 20));
+}
+
+
+if (524287 >>> 20 !== 0) {
+ $ERROR('#680: 524287 >>> 20 === 0. Actual: ' + (524287 >>> 20));
+}
+
+
+if (1048575 >>> 20 !== 0) {
+ $ERROR('#681: 1048575 >>> 20 === 0. Actual: ' + (1048575 >>> 20));
+}
+
+
+if (2097151 >>> 20 !== 1) {
+ $ERROR('#682: 2097151 >>> 20 === 1. Actual: ' + (2097151 >>> 20));
+}
+
+
+if (4194303 >>> 20 !== 3) {
+ $ERROR('#683: 4194303 >>> 20 === 3. Actual: ' + (4194303 >>> 20));
+}
+
+
+if (8388607 >>> 20 !== 7) {
+ $ERROR('#684: 8388607 >>> 20 === 7. Actual: ' + (8388607 >>> 20));
+}
+
+
+if (16777215 >>> 20 !== 15) {
+ $ERROR('#685: 16777215 >>> 20 === 15. Actual: ' + (16777215 >>> 20));
+}
+
+
+if (33554431 >>> 20 !== 31) {
+ $ERROR('#686: 33554431 >>> 20 === 31. Actual: ' + (33554431 >>> 20));
+}
+
+
+if (67108863 >>> 20 !== 63) {
+ $ERROR('#687: 67108863 >>> 20 === 63. Actual: ' + (67108863 >>> 20));
+}
+
+
+if (134217727 >>> 20 !== 127) {
+ $ERROR('#688: 134217727 >>> 20 === 127. Actual: ' + (134217727 >>> 20));
+}
+
+
+if (268435455 >>> 20 !== 255) {
+ $ERROR('#689: 268435455 >>> 20 === 255. Actual: ' + (268435455 >>> 20));
+}
+
+
+if (536870911 >>> 20 !== 511) {
+ $ERROR('#690: 536870911 >>> 20 === 511. Actual: ' + (536870911 >>> 20));
+}
+
+
+if (1073741823 >>> 20 !== 1023) {
+ $ERROR('#691: 1073741823 >>> 20 === 1023. Actual: ' + (1073741823 >>> 20));
+}
+
+
+if (2147483647 >>> 20 !== 2047) {
+ $ERROR('#692: 2147483647 >>> 20 === 2047. Actual: ' + (2147483647 >>> 20));
+}
+
+
+if (4294967295 >>> 20 !== 4095) {
+ $ERROR('#693: 4294967295 >>> 20 === 4095. Actual: ' + (4294967295 >>> 20));
+}
+
+
+if (0 >>> 21 !== 0) {
+ $ERROR('#694: 0 >>> 21 === 0. Actual: ' + (0 >>> 21));
+}
+
+
+if (1 >>> 21 !== 0) {
+ $ERROR('#695: 1 >>> 21 === 0. Actual: ' + (1 >>> 21));
+}
+
+
+if (3 >>> 21 !== 0) {
+ $ERROR('#696: 3 >>> 21 === 0. Actual: ' + (3 >>> 21));
+}
+
+
+if (7 >>> 21 !== 0) {
+ $ERROR('#697: 7 >>> 21 === 0. Actual: ' + (7 >>> 21));
+}
+
+
+if (15 >>> 21 !== 0) {
+ $ERROR('#698: 15 >>> 21 === 0. Actual: ' + (15 >>> 21));
+}
+
+
+if (31 >>> 21 !== 0) {
+ $ERROR('#699: 31 >>> 21 === 0. Actual: ' + (31 >>> 21));
+}
+
+
+if (63 >>> 21 !== 0) {
+ $ERROR('#700: 63 >>> 21 === 0. Actual: ' + (63 >>> 21));
+}
+
+
+if (127 >>> 21 !== 0) {
+ $ERROR('#701: 127 >>> 21 === 0. Actual: ' + (127 >>> 21));
+}
+
+
+if (255 >>> 21 !== 0) {
+ $ERROR('#702: 255 >>> 21 === 0. Actual: ' + (255 >>> 21));
+}
+
+
+if (511 >>> 21 !== 0) {
+ $ERROR('#703: 511 >>> 21 === 0. Actual: ' + (511 >>> 21));
+}
+
+
+if (1023 >>> 21 !== 0) {
+ $ERROR('#704: 1023 >>> 21 === 0. Actual: ' + (1023 >>> 21));
+}
+
+
+if (2047 >>> 21 !== 0) {
+ $ERROR('#705: 2047 >>> 21 === 0. Actual: ' + (2047 >>> 21));
+}
+
+
+if (4095 >>> 21 !== 0) {
+ $ERROR('#706: 4095 >>> 21 === 0. Actual: ' + (4095 >>> 21));
+}
+
+
+if (8191 >>> 21 !== 0) {
+ $ERROR('#707: 8191 >>> 21 === 0. Actual: ' + (8191 >>> 21));
+}
+
+
+if (16383 >>> 21 !== 0) {
+ $ERROR('#708: 16383 >>> 21 === 0. Actual: ' + (16383 >>> 21));
+}
+
+
+if (32767 >>> 21 !== 0) {
+ $ERROR('#709: 32767 >>> 21 === 0. Actual: ' + (32767 >>> 21));
+}
+
+
+if (65535 >>> 21 !== 0) {
+ $ERROR('#710: 65535 >>> 21 === 0. Actual: ' + (65535 >>> 21));
+}
+
+
+if (131071 >>> 21 !== 0) {
+ $ERROR('#711: 131071 >>> 21 === 0. Actual: ' + (131071 >>> 21));
+}
+
+
+if (262143 >>> 21 !== 0) {
+ $ERROR('#712: 262143 >>> 21 === 0. Actual: ' + (262143 >>> 21));
+}
+
+
+if (524287 >>> 21 !== 0) {
+ $ERROR('#713: 524287 >>> 21 === 0. Actual: ' + (524287 >>> 21));
+}
+
+
+if (1048575 >>> 21 !== 0) {
+ $ERROR('#714: 1048575 >>> 21 === 0. Actual: ' + (1048575 >>> 21));
+}
+
+
+if (2097151 >>> 21 !== 0) {
+ $ERROR('#715: 2097151 >>> 21 === 0. Actual: ' + (2097151 >>> 21));
+}
+
+
+if (4194303 >>> 21 !== 1) {
+ $ERROR('#716: 4194303 >>> 21 === 1. Actual: ' + (4194303 >>> 21));
+}
+
+
+if (8388607 >>> 21 !== 3) {
+ $ERROR('#717: 8388607 >>> 21 === 3. Actual: ' + (8388607 >>> 21));
+}
+
+
+if (16777215 >>> 21 !== 7) {
+ $ERROR('#718: 16777215 >>> 21 === 7. Actual: ' + (16777215 >>> 21));
+}
+
+
+if (33554431 >>> 21 !== 15) {
+ $ERROR('#719: 33554431 >>> 21 === 15. Actual: ' + (33554431 >>> 21));
+}
+
+
+if (67108863 >>> 21 !== 31) {
+ $ERROR('#720: 67108863 >>> 21 === 31. Actual: ' + (67108863 >>> 21));
+}
+
+
+if (134217727 >>> 21 !== 63) {
+ $ERROR('#721: 134217727 >>> 21 === 63. Actual: ' + (134217727 >>> 21));
+}
+
+
+if (268435455 >>> 21 !== 127) {
+ $ERROR('#722: 268435455 >>> 21 === 127. Actual: ' + (268435455 >>> 21));
+}
+
+
+if (536870911 >>> 21 !== 255) {
+ $ERROR('#723: 536870911 >>> 21 === 255. Actual: ' + (536870911 >>> 21));
+}
+
+
+if (1073741823 >>> 21 !== 511) {
+ $ERROR('#724: 1073741823 >>> 21 === 511. Actual: ' + (1073741823 >>> 21));
+}
+
+
+if (2147483647 >>> 21 !== 1023) {
+ $ERROR('#725: 2147483647 >>> 21 === 1023. Actual: ' + (2147483647 >>> 21));
+}
+
+
+if (4294967295 >>> 21 !== 2047) {
+ $ERROR('#726: 4294967295 >>> 21 === 2047. Actual: ' + (4294967295 >>> 21));
+}
+
+
+if (0 >>> 22 !== 0) {
+ $ERROR('#727: 0 >>> 22 === 0. Actual: ' + (0 >>> 22));
+}
+
+
+if (1 >>> 22 !== 0) {
+ $ERROR('#728: 1 >>> 22 === 0. Actual: ' + (1 >>> 22));
+}
+
+
+if (3 >>> 22 !== 0) {
+ $ERROR('#729: 3 >>> 22 === 0. Actual: ' + (3 >>> 22));
+}
+
+
+if (7 >>> 22 !== 0) {
+ $ERROR('#730: 7 >>> 22 === 0. Actual: ' + (7 >>> 22));
+}
+
+
+if (15 >>> 22 !== 0) {
+ $ERROR('#731: 15 >>> 22 === 0. Actual: ' + (15 >>> 22));
+}
+
+
+if (31 >>> 22 !== 0) {
+ $ERROR('#732: 31 >>> 22 === 0. Actual: ' + (31 >>> 22));
+}
+
+
+if (63 >>> 22 !== 0) {
+ $ERROR('#733: 63 >>> 22 === 0. Actual: ' + (63 >>> 22));
+}
+
+
+if (127 >>> 22 !== 0) {
+ $ERROR('#734: 127 >>> 22 === 0. Actual: ' + (127 >>> 22));
+}
+
+
+if (255 >>> 22 !== 0) {
+ $ERROR('#735: 255 >>> 22 === 0. Actual: ' + (255 >>> 22));
+}
+
+
+if (511 >>> 22 !== 0) {
+ $ERROR('#736: 511 >>> 22 === 0. Actual: ' + (511 >>> 22));
+}
+
+
+if (1023 >>> 22 !== 0) {
+ $ERROR('#737: 1023 >>> 22 === 0. Actual: ' + (1023 >>> 22));
+}
+
+
+if (2047 >>> 22 !== 0) {
+ $ERROR('#738: 2047 >>> 22 === 0. Actual: ' + (2047 >>> 22));
+}
+
+
+if (4095 >>> 22 !== 0) {
+ $ERROR('#739: 4095 >>> 22 === 0. Actual: ' + (4095 >>> 22));
+}
+
+
+if (8191 >>> 22 !== 0) {
+ $ERROR('#740: 8191 >>> 22 === 0. Actual: ' + (8191 >>> 22));
+}
+
+
+if (16383 >>> 22 !== 0) {
+ $ERROR('#741: 16383 >>> 22 === 0. Actual: ' + (16383 >>> 22));
+}
+
+
+if (32767 >>> 22 !== 0) {
+ $ERROR('#742: 32767 >>> 22 === 0. Actual: ' + (32767 >>> 22));
+}
+
+
+if (65535 >>> 22 !== 0) {
+ $ERROR('#743: 65535 >>> 22 === 0. Actual: ' + (65535 >>> 22));
+}
+
+
+if (131071 >>> 22 !== 0) {
+ $ERROR('#744: 131071 >>> 22 === 0. Actual: ' + (131071 >>> 22));
+}
+
+
+if (262143 >>> 22 !== 0) {
+ $ERROR('#745: 262143 >>> 22 === 0. Actual: ' + (262143 >>> 22));
+}
+
+
+if (524287 >>> 22 !== 0) {
+ $ERROR('#746: 524287 >>> 22 === 0. Actual: ' + (524287 >>> 22));
+}
+
+
+if (1048575 >>> 22 !== 0) {
+ $ERROR('#747: 1048575 >>> 22 === 0. Actual: ' + (1048575 >>> 22));
+}
+
+
+if (2097151 >>> 22 !== 0) {
+ $ERROR('#748: 2097151 >>> 22 === 0. Actual: ' + (2097151 >>> 22));
+}
+
+
+if (4194303 >>> 22 !== 0) {
+ $ERROR('#749: 4194303 >>> 22 === 0. Actual: ' + (4194303 >>> 22));
+}
+
+
+if (8388607 >>> 22 !== 1) {
+ $ERROR('#750: 8388607 >>> 22 === 1. Actual: ' + (8388607 >>> 22));
+}
+
+
+if (16777215 >>> 22 !== 3) {
+ $ERROR('#751: 16777215 >>> 22 === 3. Actual: ' + (16777215 >>> 22));
+}
+
+
+if (33554431 >>> 22 !== 7) {
+ $ERROR('#752: 33554431 >>> 22 === 7. Actual: ' + (33554431 >>> 22));
+}
+
+
+if (67108863 >>> 22 !== 15) {
+ $ERROR('#753: 67108863 >>> 22 === 15. Actual: ' + (67108863 >>> 22));
+}
+
+
+if (134217727 >>> 22 !== 31) {
+ $ERROR('#754: 134217727 >>> 22 === 31. Actual: ' + (134217727 >>> 22));
+}
+
+
+if (268435455 >>> 22 !== 63) {
+ $ERROR('#755: 268435455 >>> 22 === 63. Actual: ' + (268435455 >>> 22));
+}
+
+
+if (536870911 >>> 22 !== 127) {
+ $ERROR('#756: 536870911 >>> 22 === 127. Actual: ' + (536870911 >>> 22));
+}
+
+
+if (1073741823 >>> 22 !== 255) {
+ $ERROR('#757: 1073741823 >>> 22 === 255. Actual: ' + (1073741823 >>> 22));
+}
+
+
+if (2147483647 >>> 22 !== 511) {
+ $ERROR('#758: 2147483647 >>> 22 === 511. Actual: ' + (2147483647 >>> 22));
+}
+
+
+if (4294967295 >>> 22 !== 1023) {
+ $ERROR('#759: 4294967295 >>> 22 === 1023. Actual: ' + (4294967295 >>> 22));
+}
+
+
+if (0 >>> 23 !== 0) {
+ $ERROR('#760: 0 >>> 23 === 0. Actual: ' + (0 >>> 23));
+}
+
+
+if (1 >>> 23 !== 0) {
+ $ERROR('#761: 1 >>> 23 === 0. Actual: ' + (1 >>> 23));
+}
+
+
+if (3 >>> 23 !== 0) {
+ $ERROR('#762: 3 >>> 23 === 0. Actual: ' + (3 >>> 23));
+}
+
+
+if (7 >>> 23 !== 0) {
+ $ERROR('#763: 7 >>> 23 === 0. Actual: ' + (7 >>> 23));
+}
+
+
+if (15 >>> 23 !== 0) {
+ $ERROR('#764: 15 >>> 23 === 0. Actual: ' + (15 >>> 23));
+}
+
+
+if (31 >>> 23 !== 0) {
+ $ERROR('#765: 31 >>> 23 === 0. Actual: ' + (31 >>> 23));
+}
+
+
+if (63 >>> 23 !== 0) {
+ $ERROR('#766: 63 >>> 23 === 0. Actual: ' + (63 >>> 23));
+}
+
+
+if (127 >>> 23 !== 0) {
+ $ERROR('#767: 127 >>> 23 === 0. Actual: ' + (127 >>> 23));
+}
+
+
+if (255 >>> 23 !== 0) {
+ $ERROR('#768: 255 >>> 23 === 0. Actual: ' + (255 >>> 23));
+}
+
+
+if (511 >>> 23 !== 0) {
+ $ERROR('#769: 511 >>> 23 === 0. Actual: ' + (511 >>> 23));
+}
+
+
+if (1023 >>> 23 !== 0) {
+ $ERROR('#770: 1023 >>> 23 === 0. Actual: ' + (1023 >>> 23));
+}
+
+
+if (2047 >>> 23 !== 0) {
+ $ERROR('#771: 2047 >>> 23 === 0. Actual: ' + (2047 >>> 23));
+}
+
+
+if (4095 >>> 23 !== 0) {
+ $ERROR('#772: 4095 >>> 23 === 0. Actual: ' + (4095 >>> 23));
+}
+
+
+if (8191 >>> 23 !== 0) {
+ $ERROR('#773: 8191 >>> 23 === 0. Actual: ' + (8191 >>> 23));
+}
+
+
+if (16383 >>> 23 !== 0) {
+ $ERROR('#774: 16383 >>> 23 === 0. Actual: ' + (16383 >>> 23));
+}
+
+
+if (32767 >>> 23 !== 0) {
+ $ERROR('#775: 32767 >>> 23 === 0. Actual: ' + (32767 >>> 23));
+}
+
+
+if (65535 >>> 23 !== 0) {
+ $ERROR('#776: 65535 >>> 23 === 0. Actual: ' + (65535 >>> 23));
+}
+
+
+if (131071 >>> 23 !== 0) {
+ $ERROR('#777: 131071 >>> 23 === 0. Actual: ' + (131071 >>> 23));
+}
+
+
+if (262143 >>> 23 !== 0) {
+ $ERROR('#778: 262143 >>> 23 === 0. Actual: ' + (262143 >>> 23));
+}
+
+
+if (524287 >>> 23 !== 0) {
+ $ERROR('#779: 524287 >>> 23 === 0. Actual: ' + (524287 >>> 23));
+}
+
+
+if (1048575 >>> 23 !== 0) {
+ $ERROR('#780: 1048575 >>> 23 === 0. Actual: ' + (1048575 >>> 23));
+}
+
+
+if (2097151 >>> 23 !== 0) {
+ $ERROR('#781: 2097151 >>> 23 === 0. Actual: ' + (2097151 >>> 23));
+}
+
+
+if (4194303 >>> 23 !== 0) {
+ $ERROR('#782: 4194303 >>> 23 === 0. Actual: ' + (4194303 >>> 23));
+}
+
+
+if (8388607 >>> 23 !== 0) {
+ $ERROR('#783: 8388607 >>> 23 === 0. Actual: ' + (8388607 >>> 23));
+}
+
+
+if (16777215 >>> 23 !== 1) {
+ $ERROR('#784: 16777215 >>> 23 === 1. Actual: ' + (16777215 >>> 23));
+}
+
+
+if (33554431 >>> 23 !== 3) {
+ $ERROR('#785: 33554431 >>> 23 === 3. Actual: ' + (33554431 >>> 23));
+}
+
+
+if (67108863 >>> 23 !== 7) {
+ $ERROR('#786: 67108863 >>> 23 === 7. Actual: ' + (67108863 >>> 23));
+}
+
+
+if (134217727 >>> 23 !== 15) {
+ $ERROR('#787: 134217727 >>> 23 === 15. Actual: ' + (134217727 >>> 23));
+}
+
+
+if (268435455 >>> 23 !== 31) {
+ $ERROR('#788: 268435455 >>> 23 === 31. Actual: ' + (268435455 >>> 23));
+}
+
+
+if (536870911 >>> 23 !== 63) {
+ $ERROR('#789: 536870911 >>> 23 === 63. Actual: ' + (536870911 >>> 23));
+}
+
+
+if (1073741823 >>> 23 !== 127) {
+ $ERROR('#790: 1073741823 >>> 23 === 127. Actual: ' + (1073741823 >>> 23));
+}
+
+
+if (2147483647 >>> 23 !== 255) {
+ $ERROR('#791: 2147483647 >>> 23 === 255. Actual: ' + (2147483647 >>> 23));
+}
+
+
+if (4294967295 >>> 23 !== 511) {
+ $ERROR('#792: 4294967295 >>> 23 === 511. Actual: ' + (4294967295 >>> 23));
+}
+
+
+if (0 >>> 24 !== 0) {
+ $ERROR('#793: 0 >>> 24 === 0. Actual: ' + (0 >>> 24));
+}
+
+
+if (1 >>> 24 !== 0) {
+ $ERROR('#794: 1 >>> 24 === 0. Actual: ' + (1 >>> 24));
+}
+
+
+if (3 >>> 24 !== 0) {
+ $ERROR('#795: 3 >>> 24 === 0. Actual: ' + (3 >>> 24));
+}
+
+
+if (7 >>> 24 !== 0) {
+ $ERROR('#796: 7 >>> 24 === 0. Actual: ' + (7 >>> 24));
+}
+
+
+if (15 >>> 24 !== 0) {
+ $ERROR('#797: 15 >>> 24 === 0. Actual: ' + (15 >>> 24));
+}
+
+
+if (31 >>> 24 !== 0) {
+ $ERROR('#798: 31 >>> 24 === 0. Actual: ' + (31 >>> 24));
+}
+
+
+if (63 >>> 24 !== 0) {
+ $ERROR('#799: 63 >>> 24 === 0. Actual: ' + (63 >>> 24));
+}
+
+
+if (127 >>> 24 !== 0) {
+ $ERROR('#800: 127 >>> 24 === 0. Actual: ' + (127 >>> 24));
+}
+
+
+if (255 >>> 24 !== 0) {
+ $ERROR('#801: 255 >>> 24 === 0. Actual: ' + (255 >>> 24));
+}
+
+
+if (511 >>> 24 !== 0) {
+ $ERROR('#802: 511 >>> 24 === 0. Actual: ' + (511 >>> 24));
+}
+
+
+if (1023 >>> 24 !== 0) {
+ $ERROR('#803: 1023 >>> 24 === 0. Actual: ' + (1023 >>> 24));
+}
+
+
+if (2047 >>> 24 !== 0) {
+ $ERROR('#804: 2047 >>> 24 === 0. Actual: ' + (2047 >>> 24));
+}
+
+
+if (4095 >>> 24 !== 0) {
+ $ERROR('#805: 4095 >>> 24 === 0. Actual: ' + (4095 >>> 24));
+}
+
+
+if (8191 >>> 24 !== 0) {
+ $ERROR('#806: 8191 >>> 24 === 0. Actual: ' + (8191 >>> 24));
+}
+
+
+if (16383 >>> 24 !== 0) {
+ $ERROR('#807: 16383 >>> 24 === 0. Actual: ' + (16383 >>> 24));
+}
+
+
+if (32767 >>> 24 !== 0) {
+ $ERROR('#808: 32767 >>> 24 === 0. Actual: ' + (32767 >>> 24));
+}
+
+
+if (65535 >>> 24 !== 0) {
+ $ERROR('#809: 65535 >>> 24 === 0. Actual: ' + (65535 >>> 24));
+}
+
+
+if (131071 >>> 24 !== 0) {
+ $ERROR('#810: 131071 >>> 24 === 0. Actual: ' + (131071 >>> 24));
+}
+
+
+if (262143 >>> 24 !== 0) {
+ $ERROR('#811: 262143 >>> 24 === 0. Actual: ' + (262143 >>> 24));
+}
+
+
+if (524287 >>> 24 !== 0) {
+ $ERROR('#812: 524287 >>> 24 === 0. Actual: ' + (524287 >>> 24));
+}
+
+
+if (1048575 >>> 24 !== 0) {
+ $ERROR('#813: 1048575 >>> 24 === 0. Actual: ' + (1048575 >>> 24));
+}
+
+
+if (2097151 >>> 24 !== 0) {
+ $ERROR('#814: 2097151 >>> 24 === 0. Actual: ' + (2097151 >>> 24));
+}
+
+
+if (4194303 >>> 24 !== 0) {
+ $ERROR('#815: 4194303 >>> 24 === 0. Actual: ' + (4194303 >>> 24));
+}
+
+
+if (8388607 >>> 24 !== 0) {
+ $ERROR('#816: 8388607 >>> 24 === 0. Actual: ' + (8388607 >>> 24));
+}
+
+
+if (16777215 >>> 24 !== 0) {
+ $ERROR('#817: 16777215 >>> 24 === 0. Actual: ' + (16777215 >>> 24));
+}
+
+
+if (33554431 >>> 24 !== 1) {
+ $ERROR('#818: 33554431 >>> 24 === 1. Actual: ' + (33554431 >>> 24));
+}
+
+
+if (67108863 >>> 24 !== 3) {
+ $ERROR('#819: 67108863 >>> 24 === 3. Actual: ' + (67108863 >>> 24));
+}
+
+
+if (134217727 >>> 24 !== 7) {
+ $ERROR('#820: 134217727 >>> 24 === 7. Actual: ' + (134217727 >>> 24));
+}
+
+
+if (268435455 >>> 24 !== 15) {
+ $ERROR('#821: 268435455 >>> 24 === 15. Actual: ' + (268435455 >>> 24));
+}
+
+
+if (536870911 >>> 24 !== 31) {
+ $ERROR('#822: 536870911 >>> 24 === 31. Actual: ' + (536870911 >>> 24));
+}
+
+
+if (1073741823 >>> 24 !== 63) {
+ $ERROR('#823: 1073741823 >>> 24 === 63. Actual: ' + (1073741823 >>> 24));
+}
+
+
+if (2147483647 >>> 24 !== 127) {
+ $ERROR('#824: 2147483647 >>> 24 === 127. Actual: ' + (2147483647 >>> 24));
+}
+
+
+if (4294967295 >>> 24 !== 255) {
+ $ERROR('#825: 4294967295 >>> 24 === 255. Actual: ' + (4294967295 >>> 24));
+}
+
+
+if (0 >>> 25 !== 0) {
+ $ERROR('#826: 0 >>> 25 === 0. Actual: ' + (0 >>> 25));
+}
+
+
+if (1 >>> 25 !== 0) {
+ $ERROR('#827: 1 >>> 25 === 0. Actual: ' + (1 >>> 25));
+}
+
+
+if (3 >>> 25 !== 0) {
+ $ERROR('#828: 3 >>> 25 === 0. Actual: ' + (3 >>> 25));
+}
+
+
+if (7 >>> 25 !== 0) {
+ $ERROR('#829: 7 >>> 25 === 0. Actual: ' + (7 >>> 25));
+}
+
+
+if (15 >>> 25 !== 0) {
+ $ERROR('#830: 15 >>> 25 === 0. Actual: ' + (15 >>> 25));
+}
+
+
+if (31 >>> 25 !== 0) {
+ $ERROR('#831: 31 >>> 25 === 0. Actual: ' + (31 >>> 25));
+}
+
+
+if (63 >>> 25 !== 0) {
+ $ERROR('#832: 63 >>> 25 === 0. Actual: ' + (63 >>> 25));
+}
+
+
+if (127 >>> 25 !== 0) {
+ $ERROR('#833: 127 >>> 25 === 0. Actual: ' + (127 >>> 25));
+}
+
+
+if (255 >>> 25 !== 0) {
+ $ERROR('#834: 255 >>> 25 === 0. Actual: ' + (255 >>> 25));
+}
+
+
+if (511 >>> 25 !== 0) {
+ $ERROR('#835: 511 >>> 25 === 0. Actual: ' + (511 >>> 25));
+}
+
+
+if (1023 >>> 25 !== 0) {
+ $ERROR('#836: 1023 >>> 25 === 0. Actual: ' + (1023 >>> 25));
+}
+
+
+if (2047 >>> 25 !== 0) {
+ $ERROR('#837: 2047 >>> 25 === 0. Actual: ' + (2047 >>> 25));
+}
+
+
+if (4095 >>> 25 !== 0) {
+ $ERROR('#838: 4095 >>> 25 === 0. Actual: ' + (4095 >>> 25));
+}
+
+
+if (8191 >>> 25 !== 0) {
+ $ERROR('#839: 8191 >>> 25 === 0. Actual: ' + (8191 >>> 25));
+}
+
+
+if (16383 >>> 25 !== 0) {
+ $ERROR('#840: 16383 >>> 25 === 0. Actual: ' + (16383 >>> 25));
+}
+
+
+if (32767 >>> 25 !== 0) {
+ $ERROR('#841: 32767 >>> 25 === 0. Actual: ' + (32767 >>> 25));
+}
+
+
+if (65535 >>> 25 !== 0) {
+ $ERROR('#842: 65535 >>> 25 === 0. Actual: ' + (65535 >>> 25));
+}
+
+
+if (131071 >>> 25 !== 0) {
+ $ERROR('#843: 131071 >>> 25 === 0. Actual: ' + (131071 >>> 25));
+}
+
+
+if (262143 >>> 25 !== 0) {
+ $ERROR('#844: 262143 >>> 25 === 0. Actual: ' + (262143 >>> 25));
+}
+
+
+if (524287 >>> 25 !== 0) {
+ $ERROR('#845: 524287 >>> 25 === 0. Actual: ' + (524287 >>> 25));
+}
+
+
+if (1048575 >>> 25 !== 0) {
+ $ERROR('#846: 1048575 >>> 25 === 0. Actual: ' + (1048575 >>> 25));
+}
+
+
+if (2097151 >>> 25 !== 0) {
+ $ERROR('#847: 2097151 >>> 25 === 0. Actual: ' + (2097151 >>> 25));
+}
+
+
+if (4194303 >>> 25 !== 0) {
+ $ERROR('#848: 4194303 >>> 25 === 0. Actual: ' + (4194303 >>> 25));
+}
+
+
+if (8388607 >>> 25 !== 0) {
+ $ERROR('#849: 8388607 >>> 25 === 0. Actual: ' + (8388607 >>> 25));
+}
+
+
+if (16777215 >>> 25 !== 0) {
+ $ERROR('#850: 16777215 >>> 25 === 0. Actual: ' + (16777215 >>> 25));
+}
+
+
+if (33554431 >>> 25 !== 0) {
+ $ERROR('#851: 33554431 >>> 25 === 0. Actual: ' + (33554431 >>> 25));
+}
+
+
+if (67108863 >>> 25 !== 1) {
+ $ERROR('#852: 67108863 >>> 25 === 1. Actual: ' + (67108863 >>> 25));
+}
+
+
+if (134217727 >>> 25 !== 3) {
+ $ERROR('#853: 134217727 >>> 25 === 3. Actual: ' + (134217727 >>> 25));
+}
+
+
+if (268435455 >>> 25 !== 7) {
+ $ERROR('#854: 268435455 >>> 25 === 7. Actual: ' + (268435455 >>> 25));
+}
+
+
+if (536870911 >>> 25 !== 15) {
+ $ERROR('#855: 536870911 >>> 25 === 15. Actual: ' + (536870911 >>> 25));
+}
+
+
+if (1073741823 >>> 25 !== 31) {
+ $ERROR('#856: 1073741823 >>> 25 === 31. Actual: ' + (1073741823 >>> 25));
+}
+
+
+if (2147483647 >>> 25 !== 63) {
+ $ERROR('#857: 2147483647 >>> 25 === 63. Actual: ' + (2147483647 >>> 25));
+}
+
+
+if (4294967295 >>> 25 !== 127) {
+ $ERROR('#858: 4294967295 >>> 25 === 127. Actual: ' + (4294967295 >>> 25));
+}
+
+
+if (0 >>> 26 !== 0) {
+ $ERROR('#859: 0 >>> 26 === 0. Actual: ' + (0 >>> 26));
+}
+
+
+if (1 >>> 26 !== 0) {
+ $ERROR('#860: 1 >>> 26 === 0. Actual: ' + (1 >>> 26));
+}
+
+
+if (3 >>> 26 !== 0) {
+ $ERROR('#861: 3 >>> 26 === 0. Actual: ' + (3 >>> 26));
+}
+
+
+if (7 >>> 26 !== 0) {
+ $ERROR('#862: 7 >>> 26 === 0. Actual: ' + (7 >>> 26));
+}
+
+
+if (15 >>> 26 !== 0) {
+ $ERROR('#863: 15 >>> 26 === 0. Actual: ' + (15 >>> 26));
+}
+
+
+if (31 >>> 26 !== 0) {
+ $ERROR('#864: 31 >>> 26 === 0. Actual: ' + (31 >>> 26));
+}
+
+
+if (63 >>> 26 !== 0) {
+ $ERROR('#865: 63 >>> 26 === 0. Actual: ' + (63 >>> 26));
+}
+
+
+if (127 >>> 26 !== 0) {
+ $ERROR('#866: 127 >>> 26 === 0. Actual: ' + (127 >>> 26));
+}
+
+
+if (255 >>> 26 !== 0) {
+ $ERROR('#867: 255 >>> 26 === 0. Actual: ' + (255 >>> 26));
+}
+
+
+if (511 >>> 26 !== 0) {
+ $ERROR('#868: 511 >>> 26 === 0. Actual: ' + (511 >>> 26));
+}
+
+
+if (1023 >>> 26 !== 0) {
+ $ERROR('#869: 1023 >>> 26 === 0. Actual: ' + (1023 >>> 26));
+}
+
+
+if (2047 >>> 26 !== 0) {
+ $ERROR('#870: 2047 >>> 26 === 0. Actual: ' + (2047 >>> 26));
+}
+
+
+if (4095 >>> 26 !== 0) {
+ $ERROR('#871: 4095 >>> 26 === 0. Actual: ' + (4095 >>> 26));
+}
+
+
+if (8191 >>> 26 !== 0) {
+ $ERROR('#872: 8191 >>> 26 === 0. Actual: ' + (8191 >>> 26));
+}
+
+
+if (16383 >>> 26 !== 0) {
+ $ERROR('#873: 16383 >>> 26 === 0. Actual: ' + (16383 >>> 26));
+}
+
+
+if (32767 >>> 26 !== 0) {
+ $ERROR('#874: 32767 >>> 26 === 0. Actual: ' + (32767 >>> 26));
+}
+
+
+if (65535 >>> 26 !== 0) {
+ $ERROR('#875: 65535 >>> 26 === 0. Actual: ' + (65535 >>> 26));
+}
+
+
+if (131071 >>> 26 !== 0) {
+ $ERROR('#876: 131071 >>> 26 === 0. Actual: ' + (131071 >>> 26));
+}
+
+
+if (262143 >>> 26 !== 0) {
+ $ERROR('#877: 262143 >>> 26 === 0. Actual: ' + (262143 >>> 26));
+}
+
+
+if (524287 >>> 26 !== 0) {
+ $ERROR('#878: 524287 >>> 26 === 0. Actual: ' + (524287 >>> 26));
+}
+
+
+if (1048575 >>> 26 !== 0) {
+ $ERROR('#879: 1048575 >>> 26 === 0. Actual: ' + (1048575 >>> 26));
+}
+
+
+if (2097151 >>> 26 !== 0) {
+ $ERROR('#880: 2097151 >>> 26 === 0. Actual: ' + (2097151 >>> 26));
+}
+
+
+if (4194303 >>> 26 !== 0) {
+ $ERROR('#881: 4194303 >>> 26 === 0. Actual: ' + (4194303 >>> 26));
+}
+
+
+if (8388607 >>> 26 !== 0) {
+ $ERROR('#882: 8388607 >>> 26 === 0. Actual: ' + (8388607 >>> 26));
+}
+
+
+if (16777215 >>> 26 !== 0) {
+ $ERROR('#883: 16777215 >>> 26 === 0. Actual: ' + (16777215 >>> 26));
+}
+
+
+if (33554431 >>> 26 !== 0) {
+ $ERROR('#884: 33554431 >>> 26 === 0. Actual: ' + (33554431 >>> 26));
+}
+
+
+if (67108863 >>> 26 !== 0) {
+ $ERROR('#885: 67108863 >>> 26 === 0. Actual: ' + (67108863 >>> 26));
+}
+
+
+if (134217727 >>> 26 !== 1) {
+ $ERROR('#886: 134217727 >>> 26 === 1. Actual: ' + (134217727 >>> 26));
+}
+
+
+if (268435455 >>> 26 !== 3) {
+ $ERROR('#887: 268435455 >>> 26 === 3. Actual: ' + (268435455 >>> 26));
+}
+
+
+if (536870911 >>> 26 !== 7) {
+ $ERROR('#888: 536870911 >>> 26 === 7. Actual: ' + (536870911 >>> 26));
+}
+
+
+if (1073741823 >>> 26 !== 15) {
+ $ERROR('#889: 1073741823 >>> 26 === 15. Actual: ' + (1073741823 >>> 26));
+}
+
+
+if (2147483647 >>> 26 !== 31) {
+ $ERROR('#890: 2147483647 >>> 26 === 31. Actual: ' + (2147483647 >>> 26));
+}
+
+
+if (4294967295 >>> 26 !== 63) {
+ $ERROR('#891: 4294967295 >>> 26 === 63. Actual: ' + (4294967295 >>> 26));
+}
+
+
+if (0 >>> 27 !== 0) {
+ $ERROR('#892: 0 >>> 27 === 0. Actual: ' + (0 >>> 27));
+}
+
+
+if (1 >>> 27 !== 0) {
+ $ERROR('#893: 1 >>> 27 === 0. Actual: ' + (1 >>> 27));
+}
+
+
+if (3 >>> 27 !== 0) {
+ $ERROR('#894: 3 >>> 27 === 0. Actual: ' + (3 >>> 27));
+}
+
+
+if (7 >>> 27 !== 0) {
+ $ERROR('#895: 7 >>> 27 === 0. Actual: ' + (7 >>> 27));
+}
+
+
+if (15 >>> 27 !== 0) {
+ $ERROR('#896: 15 >>> 27 === 0. Actual: ' + (15 >>> 27));
+}
+
+
+if (31 >>> 27 !== 0) {
+ $ERROR('#897: 31 >>> 27 === 0. Actual: ' + (31 >>> 27));
+}
+
+
+if (63 >>> 27 !== 0) {
+ $ERROR('#898: 63 >>> 27 === 0. Actual: ' + (63 >>> 27));
+}
+
+
+if (127 >>> 27 !== 0) {
+ $ERROR('#899: 127 >>> 27 === 0. Actual: ' + (127 >>> 27));
+}
+
+
+if (255 >>> 27 !== 0) {
+ $ERROR('#900: 255 >>> 27 === 0. Actual: ' + (255 >>> 27));
+}
+
+
+if (511 >>> 27 !== 0) {
+ $ERROR('#901: 511 >>> 27 === 0. Actual: ' + (511 >>> 27));
+}
+
+
+if (1023 >>> 27 !== 0) {
+ $ERROR('#902: 1023 >>> 27 === 0. Actual: ' + (1023 >>> 27));
+}
+
+
+if (2047 >>> 27 !== 0) {
+ $ERROR('#903: 2047 >>> 27 === 0. Actual: ' + (2047 >>> 27));
+}
+
+
+if (4095 >>> 27 !== 0) {
+ $ERROR('#904: 4095 >>> 27 === 0. Actual: ' + (4095 >>> 27));
+}
+
+
+if (8191 >>> 27 !== 0) {
+ $ERROR('#905: 8191 >>> 27 === 0. Actual: ' + (8191 >>> 27));
+}
+
+
+if (16383 >>> 27 !== 0) {
+ $ERROR('#906: 16383 >>> 27 === 0. Actual: ' + (16383 >>> 27));
+}
+
+
+if (32767 >>> 27 !== 0) {
+ $ERROR('#907: 32767 >>> 27 === 0. Actual: ' + (32767 >>> 27));
+}
+
+
+if (65535 >>> 27 !== 0) {
+ $ERROR('#908: 65535 >>> 27 === 0. Actual: ' + (65535 >>> 27));
+}
+
+
+if (131071 >>> 27 !== 0) {
+ $ERROR('#909: 131071 >>> 27 === 0. Actual: ' + (131071 >>> 27));
+}
+
+
+if (262143 >>> 27 !== 0) {
+ $ERROR('#910: 262143 >>> 27 === 0. Actual: ' + (262143 >>> 27));
+}
+
+
+if (524287 >>> 27 !== 0) {
+ $ERROR('#911: 524287 >>> 27 === 0. Actual: ' + (524287 >>> 27));
+}
+
+
+if (1048575 >>> 27 !== 0) {
+ $ERROR('#912: 1048575 >>> 27 === 0. Actual: ' + (1048575 >>> 27));
+}
+
+
+if (2097151 >>> 27 !== 0) {
+ $ERROR('#913: 2097151 >>> 27 === 0. Actual: ' + (2097151 >>> 27));
+}
+
+
+if (4194303 >>> 27 !== 0) {
+ $ERROR('#914: 4194303 >>> 27 === 0. Actual: ' + (4194303 >>> 27));
+}
+
+
+if (8388607 >>> 27 !== 0) {
+ $ERROR('#915: 8388607 >>> 27 === 0. Actual: ' + (8388607 >>> 27));
+}
+
+
+if (16777215 >>> 27 !== 0) {
+ $ERROR('#916: 16777215 >>> 27 === 0. Actual: ' + (16777215 >>> 27));
+}
+
+
+if (33554431 >>> 27 !== 0) {
+ $ERROR('#917: 33554431 >>> 27 === 0. Actual: ' + (33554431 >>> 27));
+}
+
+
+if (67108863 >>> 27 !== 0) {
+ $ERROR('#918: 67108863 >>> 27 === 0. Actual: ' + (67108863 >>> 27));
+}
+
+
+if (134217727 >>> 27 !== 0) {
+ $ERROR('#919: 134217727 >>> 27 === 0. Actual: ' + (134217727 >>> 27));
+}
+
+
+if (268435455 >>> 27 !== 1) {
+ $ERROR('#920: 268435455 >>> 27 === 1. Actual: ' + (268435455 >>> 27));
+}
+
+
+if (536870911 >>> 27 !== 3) {
+ $ERROR('#921: 536870911 >>> 27 === 3. Actual: ' + (536870911 >>> 27));
+}
+
+
+if (1073741823 >>> 27 !== 7) {
+ $ERROR('#922: 1073741823 >>> 27 === 7. Actual: ' + (1073741823 >>> 27));
+}
+
+
+if (2147483647 >>> 27 !== 15) {
+ $ERROR('#923: 2147483647 >>> 27 === 15. Actual: ' + (2147483647 >>> 27));
+}
+
+
+if (4294967295 >>> 27 !== 31) {
+ $ERROR('#924: 4294967295 >>> 27 === 31. Actual: ' + (4294967295 >>> 27));
+}
+
+
+if (0 >>> 28 !== 0) {
+ $ERROR('#925: 0 >>> 28 === 0. Actual: ' + (0 >>> 28));
+}
+
+
+if (1 >>> 28 !== 0) {
+ $ERROR('#926: 1 >>> 28 === 0. Actual: ' + (1 >>> 28));
+}
+
+
+if (3 >>> 28 !== 0) {
+ $ERROR('#927: 3 >>> 28 === 0. Actual: ' + (3 >>> 28));
+}
+
+
+if (7 >>> 28 !== 0) {
+ $ERROR('#928: 7 >>> 28 === 0. Actual: ' + (7 >>> 28));
+}
+
+
+if (15 >>> 28 !== 0) {
+ $ERROR('#929: 15 >>> 28 === 0. Actual: ' + (15 >>> 28));
+}
+
+
+if (31 >>> 28 !== 0) {
+ $ERROR('#930: 31 >>> 28 === 0. Actual: ' + (31 >>> 28));
+}
+
+
+if (63 >>> 28 !== 0) {
+ $ERROR('#931: 63 >>> 28 === 0. Actual: ' + (63 >>> 28));
+}
+
+
+if (127 >>> 28 !== 0) {
+ $ERROR('#932: 127 >>> 28 === 0. Actual: ' + (127 >>> 28));
+}
+
+
+if (255 >>> 28 !== 0) {
+ $ERROR('#933: 255 >>> 28 === 0. Actual: ' + (255 >>> 28));
+}
+
+
+if (511 >>> 28 !== 0) {
+ $ERROR('#934: 511 >>> 28 === 0. Actual: ' + (511 >>> 28));
+}
+
+
+if (1023 >>> 28 !== 0) {
+ $ERROR('#935: 1023 >>> 28 === 0. Actual: ' + (1023 >>> 28));
+}
+
+
+if (2047 >>> 28 !== 0) {
+ $ERROR('#936: 2047 >>> 28 === 0. Actual: ' + (2047 >>> 28));
+}
+
+
+if (4095 >>> 28 !== 0) {
+ $ERROR('#937: 4095 >>> 28 === 0. Actual: ' + (4095 >>> 28));
+}
+
+
+if (8191 >>> 28 !== 0) {
+ $ERROR('#938: 8191 >>> 28 === 0. Actual: ' + (8191 >>> 28));
+}
+
+
+if (16383 >>> 28 !== 0) {
+ $ERROR('#939: 16383 >>> 28 === 0. Actual: ' + (16383 >>> 28));
+}
+
+
+if (32767 >>> 28 !== 0) {
+ $ERROR('#940: 32767 >>> 28 === 0. Actual: ' + (32767 >>> 28));
+}
+
+
+if (65535 >>> 28 !== 0) {
+ $ERROR('#941: 65535 >>> 28 === 0. Actual: ' + (65535 >>> 28));
+}
+
+
+if (131071 >>> 28 !== 0) {
+ $ERROR('#942: 131071 >>> 28 === 0. Actual: ' + (131071 >>> 28));
+}
+
+
+if (262143 >>> 28 !== 0) {
+ $ERROR('#943: 262143 >>> 28 === 0. Actual: ' + (262143 >>> 28));
+}
+
+
+if (524287 >>> 28 !== 0) {
+ $ERROR('#944: 524287 >>> 28 === 0. Actual: ' + (524287 >>> 28));
+}
+
+
+if (1048575 >>> 28 !== 0) {
+ $ERROR('#945: 1048575 >>> 28 === 0. Actual: ' + (1048575 >>> 28));
+}
+
+
+if (2097151 >>> 28 !== 0) {
+ $ERROR('#946: 2097151 >>> 28 === 0. Actual: ' + (2097151 >>> 28));
+}
+
+
+if (4194303 >>> 28 !== 0) {
+ $ERROR('#947: 4194303 >>> 28 === 0. Actual: ' + (4194303 >>> 28));
+}
+
+
+if (8388607 >>> 28 !== 0) {
+ $ERROR('#948: 8388607 >>> 28 === 0. Actual: ' + (8388607 >>> 28));
+}
+
+
+if (16777215 >>> 28 !== 0) {
+ $ERROR('#949: 16777215 >>> 28 === 0. Actual: ' + (16777215 >>> 28));
+}
+
+
+if (33554431 >>> 28 !== 0) {
+ $ERROR('#950: 33554431 >>> 28 === 0. Actual: ' + (33554431 >>> 28));
+}
+
+
+if (67108863 >>> 28 !== 0) {
+ $ERROR('#951: 67108863 >>> 28 === 0. Actual: ' + (67108863 >>> 28));
+}
+
+
+if (134217727 >>> 28 !== 0) {
+ $ERROR('#952: 134217727 >>> 28 === 0. Actual: ' + (134217727 >>> 28));
+}
+
+
+if (268435455 >>> 28 !== 0) {
+ $ERROR('#953: 268435455 >>> 28 === 0. Actual: ' + (268435455 >>> 28));
+}
+
+
+if (536870911 >>> 28 !== 1) {
+ $ERROR('#954: 536870911 >>> 28 === 1. Actual: ' + (536870911 >>> 28));
+}
+
+
+if (1073741823 >>> 28 !== 3) {
+ $ERROR('#955: 1073741823 >>> 28 === 3. Actual: ' + (1073741823 >>> 28));
+}
+
+
+if (2147483647 >>> 28 !== 7) {
+ $ERROR('#956: 2147483647 >>> 28 === 7. Actual: ' + (2147483647 >>> 28));
+}
+
+
+if (4294967295 >>> 28 !== 15) {
+ $ERROR('#957: 4294967295 >>> 28 === 15. Actual: ' + (4294967295 >>> 28));
+}
+
+
+if (0 >>> 29 !== 0) {
+ $ERROR('#958: 0 >>> 29 === 0. Actual: ' + (0 >>> 29));
+}
+
+
+if (1 >>> 29 !== 0) {
+ $ERROR('#959: 1 >>> 29 === 0. Actual: ' + (1 >>> 29));
+}
+
+
+if (3 >>> 29 !== 0) {
+ $ERROR('#960: 3 >>> 29 === 0. Actual: ' + (3 >>> 29));
+}
+
+
+if (7 >>> 29 !== 0) {
+ $ERROR('#961: 7 >>> 29 === 0. Actual: ' + (7 >>> 29));
+}
+
+
+if (15 >>> 29 !== 0) {
+ $ERROR('#962: 15 >>> 29 === 0. Actual: ' + (15 >>> 29));
+}
+
+
+if (31 >>> 29 !== 0) {
+ $ERROR('#963: 31 >>> 29 === 0. Actual: ' + (31 >>> 29));
+}
+
+
+if (63 >>> 29 !== 0) {
+ $ERROR('#964: 63 >>> 29 === 0. Actual: ' + (63 >>> 29));
+}
+
+
+if (127 >>> 29 !== 0) {
+ $ERROR('#965: 127 >>> 29 === 0. Actual: ' + (127 >>> 29));
+}
+
+
+if (255 >>> 29 !== 0) {
+ $ERROR('#966: 255 >>> 29 === 0. Actual: ' + (255 >>> 29));
+}
+
+
+if (511 >>> 29 !== 0) {
+ $ERROR('#967: 511 >>> 29 === 0. Actual: ' + (511 >>> 29));
+}
+
+
+if (1023 >>> 29 !== 0) {
+ $ERROR('#968: 1023 >>> 29 === 0. Actual: ' + (1023 >>> 29));
+}
+
+
+if (2047 >>> 29 !== 0) {
+ $ERROR('#969: 2047 >>> 29 === 0. Actual: ' + (2047 >>> 29));
+}
+
+
+if (4095 >>> 29 !== 0) {
+ $ERROR('#970: 4095 >>> 29 === 0. Actual: ' + (4095 >>> 29));
+}
+
+
+if (8191 >>> 29 !== 0) {
+ $ERROR('#971: 8191 >>> 29 === 0. Actual: ' + (8191 >>> 29));
+}
+
+
+if (16383 >>> 29 !== 0) {
+ $ERROR('#972: 16383 >>> 29 === 0. Actual: ' + (16383 >>> 29));
+}
+
+
+if (32767 >>> 29 !== 0) {
+ $ERROR('#973: 32767 >>> 29 === 0. Actual: ' + (32767 >>> 29));
+}
+
+
+if (65535 >>> 29 !== 0) {
+ $ERROR('#974: 65535 >>> 29 === 0. Actual: ' + (65535 >>> 29));
+}
+
+
+if (131071 >>> 29 !== 0) {
+ $ERROR('#975: 131071 >>> 29 === 0. Actual: ' + (131071 >>> 29));
+}
+
+
+if (262143 >>> 29 !== 0) {
+ $ERROR('#976: 262143 >>> 29 === 0. Actual: ' + (262143 >>> 29));
+}
+
+
+if (524287 >>> 29 !== 0) {
+ $ERROR('#977: 524287 >>> 29 === 0. Actual: ' + (524287 >>> 29));
+}
+
+
+if (1048575 >>> 29 !== 0) {
+ $ERROR('#978: 1048575 >>> 29 === 0. Actual: ' + (1048575 >>> 29));
+}
+
+
+if (2097151 >>> 29 !== 0) {
+ $ERROR('#979: 2097151 >>> 29 === 0. Actual: ' + (2097151 >>> 29));
+}
+
+
+if (4194303 >>> 29 !== 0) {
+ $ERROR('#980: 4194303 >>> 29 === 0. Actual: ' + (4194303 >>> 29));
+}
+
+
+if (8388607 >>> 29 !== 0) {
+ $ERROR('#981: 8388607 >>> 29 === 0. Actual: ' + (8388607 >>> 29));
+}
+
+
+if (16777215 >>> 29 !== 0) {
+ $ERROR('#982: 16777215 >>> 29 === 0. Actual: ' + (16777215 >>> 29));
+}
+
+
+if (33554431 >>> 29 !== 0) {
+ $ERROR('#983: 33554431 >>> 29 === 0. Actual: ' + (33554431 >>> 29));
+}
+
+
+if (67108863 >>> 29 !== 0) {
+ $ERROR('#984: 67108863 >>> 29 === 0. Actual: ' + (67108863 >>> 29));
+}
+
+
+if (134217727 >>> 29 !== 0) {
+ $ERROR('#985: 134217727 >>> 29 === 0. Actual: ' + (134217727 >>> 29));
+}
+
+
+if (268435455 >>> 29 !== 0) {
+ $ERROR('#986: 268435455 >>> 29 === 0. Actual: ' + (268435455 >>> 29));
+}
+
+
+if (536870911 >>> 29 !== 0) {
+ $ERROR('#987: 536870911 >>> 29 === 0. Actual: ' + (536870911 >>> 29));
+}
+
+
+if (1073741823 >>> 29 !== 1) {
+ $ERROR('#988: 1073741823 >>> 29 === 1. Actual: ' + (1073741823 >>> 29));
+}
+
+
+if (2147483647 >>> 29 !== 3) {
+ $ERROR('#989: 2147483647 >>> 29 === 3. Actual: ' + (2147483647 >>> 29));
+}
+
+
+if (4294967295 >>> 29 !== 7) {
+ $ERROR('#990: 4294967295 >>> 29 === 7. Actual: ' + (4294967295 >>> 29));
+}
+
+
+if (0 >>> 30 !== 0) {
+ $ERROR('#991: 0 >>> 30 === 0. Actual: ' + (0 >>> 30));
+}
+
+
+if (1 >>> 30 !== 0) {
+ $ERROR('#992: 1 >>> 30 === 0. Actual: ' + (1 >>> 30));
+}
+
+
+if (3 >>> 30 !== 0) {
+ $ERROR('#993: 3 >>> 30 === 0. Actual: ' + (3 >>> 30));
+}
+
+
+if (7 >>> 30 !== 0) {
+ $ERROR('#994: 7 >>> 30 === 0. Actual: ' + (7 >>> 30));
+}
+
+
+if (15 >>> 30 !== 0) {
+ $ERROR('#995: 15 >>> 30 === 0. Actual: ' + (15 >>> 30));
+}
+
+
+if (31 >>> 30 !== 0) {
+ $ERROR('#996: 31 >>> 30 === 0. Actual: ' + (31 >>> 30));
+}
+
+
+if (63 >>> 30 !== 0) {
+ $ERROR('#997: 63 >>> 30 === 0. Actual: ' + (63 >>> 30));
+}
+
+
+if (127 >>> 30 !== 0) {
+ $ERROR('#998: 127 >>> 30 === 0. Actual: ' + (127 >>> 30));
+}
+
+
+if (255 >>> 30 !== 0) {
+ $ERROR('#999: 255 >>> 30 === 0. Actual: ' + (255 >>> 30));
+}
+
+
+if (511 >>> 30 !== 0) {
+ $ERROR('#1000: 511 >>> 30 === 0. Actual: ' + (511 >>> 30));
+}
+
+
+if (1023 >>> 30 !== 0) {
+ $ERROR('#1001: 1023 >>> 30 === 0. Actual: ' + (1023 >>> 30));
+}
+
+
+if (2047 >>> 30 !== 0) {
+ $ERROR('#1002: 2047 >>> 30 === 0. Actual: ' + (2047 >>> 30));
+}
+
+
+if (4095 >>> 30 !== 0) {
+ $ERROR('#1003: 4095 >>> 30 === 0. Actual: ' + (4095 >>> 30));
+}
+
+
+if (8191 >>> 30 !== 0) {
+ $ERROR('#1004: 8191 >>> 30 === 0. Actual: ' + (8191 >>> 30));
+}
+
+
+if (16383 >>> 30 !== 0) {
+ $ERROR('#1005: 16383 >>> 30 === 0. Actual: ' + (16383 >>> 30));
+}
+
+
+if (32767 >>> 30 !== 0) {
+ $ERROR('#1006: 32767 >>> 30 === 0. Actual: ' + (32767 >>> 30));
+}
+
+
+if (65535 >>> 30 !== 0) {
+ $ERROR('#1007: 65535 >>> 30 === 0. Actual: ' + (65535 >>> 30));
+}
+
+
+if (131071 >>> 30 !== 0) {
+ $ERROR('#1008: 131071 >>> 30 === 0. Actual: ' + (131071 >>> 30));
+}
+
+
+if (262143 >>> 30 !== 0) {
+ $ERROR('#1009: 262143 >>> 30 === 0. Actual: ' + (262143 >>> 30));
+}
+
+
+if (524287 >>> 30 !== 0) {
+ $ERROR('#1010: 524287 >>> 30 === 0. Actual: ' + (524287 >>> 30));
+}
+
+
+if (1048575 >>> 30 !== 0) {
+ $ERROR('#1011: 1048575 >>> 30 === 0. Actual: ' + (1048575 >>> 30));
+}
+
+
+if (2097151 >>> 30 !== 0) {
+ $ERROR('#1012: 2097151 >>> 30 === 0. Actual: ' + (2097151 >>> 30));
+}
+
+
+if (4194303 >>> 30 !== 0) {
+ $ERROR('#1013: 4194303 >>> 30 === 0. Actual: ' + (4194303 >>> 30));
+}
+
+
+if (8388607 >>> 30 !== 0) {
+ $ERROR('#1014: 8388607 >>> 30 === 0. Actual: ' + (8388607 >>> 30));
+}
+
+
+if (16777215 >>> 30 !== 0) {
+ $ERROR('#1015: 16777215 >>> 30 === 0. Actual: ' + (16777215 >>> 30));
+}
+
+
+if (33554431 >>> 30 !== 0) {
+ $ERROR('#1016: 33554431 >>> 30 === 0. Actual: ' + (33554431 >>> 30));
+}
+
+
+if (67108863 >>> 30 !== 0) {
+ $ERROR('#1017: 67108863 >>> 30 === 0. Actual: ' + (67108863 >>> 30));
+}
+
+
+if (134217727 >>> 30 !== 0) {
+ $ERROR('#1018: 134217727 >>> 30 === 0. Actual: ' + (134217727 >>> 30));
+}
+
+
+if (268435455 >>> 30 !== 0) {
+ $ERROR('#1019: 268435455 >>> 30 === 0. Actual: ' + (268435455 >>> 30));
+}
+
+
+if (536870911 >>> 30 !== 0) {
+ $ERROR('#1020: 536870911 >>> 30 === 0. Actual: ' + (536870911 >>> 30));
+}
+
+
+if (1073741823 >>> 30 !== 0) {
+ $ERROR('#1021: 1073741823 >>> 30 === 0. Actual: ' + (1073741823 >>> 30));
+}
+
+
+if (2147483647 >>> 30 !== 1) {
+ $ERROR('#1022: 2147483647 >>> 30 === 1. Actual: ' + (2147483647 >>> 30));
+}
+
+
+if (4294967295 >>> 30 !== 3) {
+ $ERROR('#1023: 4294967295 >>> 30 === 3. Actual: ' + (4294967295 >>> 30));
+}
+
+
+if (0 >>> 31 !== 0) {
+ $ERROR('#1024: 0 >>> 31 === 0. Actual: ' + (0 >>> 31));
+}
+
+
+if (1 >>> 31 !== 0) {
+ $ERROR('#1025: 1 >>> 31 === 0. Actual: ' + (1 >>> 31));
+}
+
+
+if (3 >>> 31 !== 0) {
+ $ERROR('#1026: 3 >>> 31 === 0. Actual: ' + (3 >>> 31));
+}
+
+
+if (7 >>> 31 !== 0) {
+ $ERROR('#1027: 7 >>> 31 === 0. Actual: ' + (7 >>> 31));
+}
+
+
+if (15 >>> 31 !== 0) {
+ $ERROR('#1028: 15 >>> 31 === 0. Actual: ' + (15 >>> 31));
+}
+
+
+if (31 >>> 31 !== 0) {
+ $ERROR('#1029: 31 >>> 31 === 0. Actual: ' + (31 >>> 31));
+}
+
+
+if (63 >>> 31 !== 0) {
+ $ERROR('#1030: 63 >>> 31 === 0. Actual: ' + (63 >>> 31));
+}
+
+
+if (127 >>> 31 !== 0) {
+ $ERROR('#1031: 127 >>> 31 === 0. Actual: ' + (127 >>> 31));
+}
+
+
+if (255 >>> 31 !== 0) {
+ $ERROR('#1032: 255 >>> 31 === 0. Actual: ' + (255 >>> 31));
+}
+
+
+if (511 >>> 31 !== 0) {
+ $ERROR('#1033: 511 >>> 31 === 0. Actual: ' + (511 >>> 31));
+}
+
+
+if (1023 >>> 31 !== 0) {
+ $ERROR('#1034: 1023 >>> 31 === 0. Actual: ' + (1023 >>> 31));
+}
+
+
+if (2047 >>> 31 !== 0) {
+ $ERROR('#1035: 2047 >>> 31 === 0. Actual: ' + (2047 >>> 31));
+}
+
+
+if (4095 >>> 31 !== 0) {
+ $ERROR('#1036: 4095 >>> 31 === 0. Actual: ' + (4095 >>> 31));
+}
+
+
+if (8191 >>> 31 !== 0) {
+ $ERROR('#1037: 8191 >>> 31 === 0. Actual: ' + (8191 >>> 31));
+}
+
+
+if (16383 >>> 31 !== 0) {
+ $ERROR('#1038: 16383 >>> 31 === 0. Actual: ' + (16383 >>> 31));
+}
+
+
+if (32767 >>> 31 !== 0) {
+ $ERROR('#1039: 32767 >>> 31 === 0. Actual: ' + (32767 >>> 31));
+}
+
+
+if (65535 >>> 31 !== 0) {
+ $ERROR('#1040: 65535 >>> 31 === 0. Actual: ' + (65535 >>> 31));
+}
+
+
+if (131071 >>> 31 !== 0) {
+ $ERROR('#1041: 131071 >>> 31 === 0. Actual: ' + (131071 >>> 31));
+}
+
+
+if (262143 >>> 31 !== 0) {
+ $ERROR('#1042: 262143 >>> 31 === 0. Actual: ' + (262143 >>> 31));
+}
+
+
+if (524287 >>> 31 !== 0) {
+ $ERROR('#1043: 524287 >>> 31 === 0. Actual: ' + (524287 >>> 31));
+}
+
+
+if (1048575 >>> 31 !== 0) {
+ $ERROR('#1044: 1048575 >>> 31 === 0. Actual: ' + (1048575 >>> 31));
+}
+
+
+if (2097151 >>> 31 !== 0) {
+ $ERROR('#1045: 2097151 >>> 31 === 0. Actual: ' + (2097151 >>> 31));
+}
+
+
+if (4194303 >>> 31 !== 0) {
+ $ERROR('#1046: 4194303 >>> 31 === 0. Actual: ' + (4194303 >>> 31));
+}
+
+
+if (8388607 >>> 31 !== 0) {
+ $ERROR('#1047: 8388607 >>> 31 === 0. Actual: ' + (8388607 >>> 31));
+}
+
+
+if (16777215 >>> 31 !== 0) {
+ $ERROR('#1048: 16777215 >>> 31 === 0. Actual: ' + (16777215 >>> 31));
+}
+
+
+if (33554431 >>> 31 !== 0) {
+ $ERROR('#1049: 33554431 >>> 31 === 0. Actual: ' + (33554431 >>> 31));
+}
+
+
+if (67108863 >>> 31 !== 0) {
+ $ERROR('#1050: 67108863 >>> 31 === 0. Actual: ' + (67108863 >>> 31));
+}
+
+
+if (134217727 >>> 31 !== 0) {
+ $ERROR('#1051: 134217727 >>> 31 === 0. Actual: ' + (134217727 >>> 31));
+}
+
+
+if (268435455 >>> 31 !== 0) {
+ $ERROR('#1052: 268435455 >>> 31 === 0. Actual: ' + (268435455 >>> 31));
+}
+
+
+if (536870911 >>> 31 !== 0) {
+ $ERROR('#1053: 536870911 >>> 31 === 0. Actual: ' + (536870911 >>> 31));
+}
+
+
+if (1073741823 >>> 31 !== 0) {
+ $ERROR('#1054: 1073741823 >>> 31 === 0. Actual: ' + (1073741823 >>> 31));
+}
+
+
+if (2147483647 >>> 31 !== 0) {
+ $ERROR('#1055: 2147483647 >>> 31 === 0. Actual: ' + (2147483647 >>> 31));
+}
+
+
+if (4294967295 >>> 31 !== 1) {
+ $ERROR('#1056: 4294967295 >>> 31 === 1. Actual: ' + (4294967295 >>> 31));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A5.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A5.1_T1.js
new file mode 100644
index 000000000..cb3547ad4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A5.1_T1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A5.1_T1;
+ * @section: 11.7.3, 9.5;
+ * @assertion: Operator x >>> y uses ToUint32(ShiftExpression);
+ * @description: Checking boundary points;
+ */
+
+//CHECK#1
+if (2147483648.1 >>> 0 !== 2147483648) {
+ $ERROR('#1: 2147483648.1 >>> 0 === 2147483648. Actual: ' + (2147483648.1 >>> 0));
+}
+
+//CHECK#2
+if (4294967296.1 >>> 0 !== 0) {
+ $ERROR('#2: 4294967296.1 >>> 0 === 0. Actual: ' + (4294967296.1 >>> 0));
+}
+
+//CHECK#3
+if (6442450944.1 >>> 0 !== 2147483648) {
+ $ERROR('#3: 6442450944.1 >>> 0 === 2147483648. Actual: ' + (6442450944.1 >>> 0));
+}
+
+//CHECK#4
+if (4294967295.1 >>> 0 !== 4294967295) {
+ $ERROR('#4: 4294967295.1 >>> 0 === 4294967295. Actual: ' + (4294967295.1 >>> 0));
+}
+
+//CHECK#5
+if (6442450943.1 >>> 0 !== 2147483647) {
+ $ERROR('#5: 6442450943.1 >>> 0 === 2147483647. Actual: ' + (6442450943.1 >>> 0));
+}
+
+//CHECK#6
+if (-2147483649.1 >>> 0 !== 2147483647) {
+ $ERROR('#6: -2147483649.1 >>> 0 === 2147483647. Actual: ' + (-2147483649.1 >>> 0));
+}
+
+//CHECK#7
+if (-4294967297.1 >>> 0 !== 4294967295) {
+ $ERROR('#7: -4294967297.1 >>> 0 === 4294967295. Actual: ' + (-4294967297.1 >>> 0));
+}
+
+//CHECK#8
+if (-6442450945.1 >>> 0 !== 2147483647) {
+ $ERROR('#8: -6442450945.1 >>> 0 === 2147483647. Actual: ' + (-6442450945.1 >>> 0));
+}
+
+//CHECK#9
+if (-4294967296.1 >>> 0 !== 0) {
+ $ERROR('#9: -4294967296.1 >>> 0 === 0 . Actual: ' + (-4294967296.1 >>> 0));
+}
+
+//CHECK#10
+if (-6442450944.1 >>> 0 !== 2147483648) {
+ $ERROR('#10: -6442450944.1 >>> 0 === 2147483648. Actual: ' + (-6442450944.1 >>> 0));
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A5.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A5.2_T1.js
new file mode 100644
index 000000000..8a17bca20
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.7_Bitwise_Shift_Operators/11.7.3_The_Unsigned_Right_Shift_Operator/S11.7.3_A5.2_T1.js
@@ -0,0 +1,330 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.7.3_A5.2_T1;
+ * @section: 11.7.3, 9.5;
+ * @assertion: Operator x >>> y uses ToUint32(AdditiveExpression) & 31;
+ * @description: Checking distinct points;
+ */
+
+//CHECK#1
+if (4294967295 >>> -32.1 !== 4294967295) {
+ $ERROR('#1: 4294967295 >>> -32.1 === 4294967295. Actual: ' + (4294967295 >>> -32.1));
+}
+
+//CHECK#2
+if (4294967295 >>> -31.1 !== 2147483647) {
+ $ERROR('#2: 4294967295 >>> -31.1 === 2147483647. Actual: ' + (4294967295 >>> -31.1));
+}
+
+//CHECK#3
+if (4294967295 >>> -30.1 !== 1073741823) {
+ $ERROR('#3: 4294967295 >>> -30.1 === 1073741823. Actual: ' + (4294967295 >>> -30.1));
+}
+
+//CHECK#4
+if (4294967295 >>> -29.1 !== 536870911) {
+ $ERROR('#4: 4294967295 >>> -29.1 === 536870911. Actual: ' + (4294967295 >>> -29.1));
+}
+
+//CHECK#5
+if (4294967295 >>> -28.1 !== 268435455) {
+ $ERROR('#5: 4294967295 >>> -28.1 === 268435455. Actual: ' + (4294967295 >>> -28.1));
+}
+
+//CHECK#6
+if (4294967295 >>> -27.1 !== 134217727) {
+ $ERROR('#6: 4294967295 >>> -27.1 === 134217727. Actual: ' + (4294967295 >>> -27.1));
+}
+
+//CHECK#7
+if (4294967295 >>> -26.1 !== 67108863) {
+ $ERROR('#7: 4294967295 >>> -26.1 === 67108863. Actual: ' + (4294967295 >>> -26.1));
+}
+
+//CHECK#8
+if (4294967295 >>> -25.1 !== 33554431) {
+ $ERROR('#8: 4294967295 >>> -25.1 === 33554431. Actual: ' + (4294967295 >>> -25.1));
+}
+
+//CHECK#9
+if (4294967295 >>> -24.1 !== 16777215) {
+ $ERROR('#9: 4294967295 >>> -24.1 === 16777215. Actual: ' + (4294967295 >>> -24.1));
+}
+
+//CHECK#10
+if (4294967295 >>> -23.1 !== 8388607) {
+ $ERROR('#10: 4294967295 >>> -23.1 === 8388607. Actual: ' + (4294967295 >>> -23.1));
+}
+
+//CHECK#11
+if (4294967295 >>> -22.1 !== 4194303) {
+ $ERROR('#11: 4294967295 >>> -22.1 === 4194303. Actual: ' + (4294967295 >>> -22.1));
+}
+
+//CHECK#12
+if (4294967295 >>> -21.1 !== 2097151) {
+ $ERROR('#12: 4294967295 >>> -21.1 === 2097151. Actual: ' + (4294967295 >>> -21.1));
+}
+
+//CHECK#13
+if (4294967295 >>> -20.1 !== 1048575) {
+ $ERROR('#13: 4294967295 >>> -20.1 === 1048575. Actual: ' + (4294967295 >>> -20.1));
+}
+
+//CHECK#14
+if (4294967295 >>> -19.1 !== 524287) {
+ $ERROR('#14: 4294967295 >>> -19.1 === 524287. Actual: ' + (4294967295 >>> -19.1));
+}
+
+//CHECK#15
+if (4294967295 >>> -18.1 !== 262143) {
+ $ERROR('#15: 4294967295 >>> -18.1 === 262143. Actual: ' + (4294967295 >>> -18.1));
+}
+
+//CHECK#16
+if (4294967295 >>> -17.1 !== 131071) {
+ $ERROR('#16: 4294967295 >>> -17.1 === 131071. Actual: ' + (4294967295 >>> -17.1));
+}
+
+//CHECK#17
+if (4294967295 >>> -16.1 !== 65535) {
+ $ERROR('#17: 4294967295 >>> -16.1 === 65535. Actual: ' + (4294967295 >>> -16.1));
+}
+
+//CHECK#18
+if (4294967295 >>> -15.1 !== 32767) {
+ $ERROR('#18: 4294967295 >>> -15.1 === 32767. Actual: ' + (4294967295 >>> -15.1));
+}
+
+//CHECK#19
+if (4294967295 >>> -14.1 !== 16383) {
+ $ERROR('#19: 4294967295 >>> -14.1 === 16383. Actual: ' + (4294967295 >>> -14.1));
+}
+
+//CHECK#20
+if (4294967295 >>> -13.1 !== 8191) {
+ $ERROR('#20: 4294967295 >>> -13.1 === 8191. Actual: ' + (4294967295 >>> -13.1));
+}
+
+//CHECK#21
+if (4294967295 >>> -12.1 !== 4095) {
+ $ERROR('#21: 4294967295 >>> -12.1 === 4095. Actual: ' + (4294967295 >>> -12.1));
+}
+
+//CHECK#22
+if (4294967295 >>> -11.1 !== 2047) {
+ $ERROR('#22: 4294967295 >>> -11.1 === 2047. Actual: ' + (4294967295 >>> -11.1));
+}
+
+//CHECK#23
+if (4294967295 >>> -10.1 !== 1023) {
+ $ERROR('#23: 4294967295 >>> -10.1 === 1023. Actual: ' + (4294967295 >>> -10.1));
+}
+
+//CHECK#24
+if (4294967295 >>> -9.1 !== 511) {
+ $ERROR('#24: 4294967295 >>> -9.1 === 511. Actual: ' + (4294967295 >>> -9.1));
+}
+
+//CHECK#25
+if (4294967295 >>> -8.1 !== 255) {
+ $ERROR('#25: 4294967295 >>> -8.1 === 255. Actual: ' + (4294967295 >>> -8.1));
+}
+
+//CHECK#26
+if (4294967295 >>> -7.1 !== 127) {
+ $ERROR('#26: 4294967295 >>> -7.1 === 127. Actual: ' + (4294967295 >>> -7.1));
+}
+
+//CHECK#27
+if (4294967295 >>> -6.1 !== 63) {
+ $ERROR('#27: 4294967295 >>> -6.1 === 63. Actual: ' + (4294967295 >>> -6.1));
+}
+
+//CHECK#28
+if (4294967295 >>> -5.1 !== 31) {
+ $ERROR('#28: 4294967295 >>> -5.1 === 31. Actual: ' + (4294967295 >>> -5.1));
+}
+
+//CHECK#29
+if (4294967295 >>> -4.1 !== 15) {
+ $ERROR('#29: 4294967295 >>> -4.1 === 15. Actual: ' + (4294967295 >>> -4.1));
+}
+
+//CHECK#30
+if (4294967295 >>> -3.1 !== 7) {
+ $ERROR('#30: 4294967295 >>> -3.1 === 7. Actual: ' + (4294967295 >>> -3.1));
+}
+
+//CHECK#31
+if (4294967295 >>> -2.1 !== 3) {
+ $ERROR('#31: 4294967295 >>> -2.1 === 3. Actual: ' + (4294967295 >>> -2.1));
+}
+
+//CHECK#32
+if (4294967295 >>> -1.1 !== 1) {
+ $ERROR('#32: 4294967295 >>> -1.1 === 1. Actual: ' + (4294967295 >>> -1.1));
+}
+
+//CHECK#33
+if (4294967295 >>> 32.1 !== 4294967295) {
+ $ERROR('#33: 4294967295 >>> 32.1 === 4294967295. Actual: ' + (4294967295 >>> 32.1));
+}
+
+//CHECK#34
+if (4294967295 >>> 33.1 !== 2147483647) {
+ $ERROR('#34: 4294967295 >>> 33.1 === 2147483647. Actual: ' + (4294967295 >>> 33.1));
+}
+
+//CHECK#35
+if (4294967295 >>> 34.1 !== 1073741823) {
+ $ERROR('#35: 4294967295 >>> 34.1 === 1073741823. Actual: ' + (4294967295 >>> 34.1));
+}
+
+//CHECK#36
+if (4294967295 >>> 35.1 !== 536870911) {
+ $ERROR('#36: 4294967295 >>> 35.1 === 536870911. Actual: ' + (4294967295 >>> 35.1));
+}
+
+//CHECK#37
+if (4294967295 >>> 36.1 !== 268435455) {
+ $ERROR('#37: 4294967295 >>> 36.1 === 268435455. Actual: ' + (4294967295 >>> 36.1));
+}
+
+//CHECK#38
+if (4294967295 >>> 37.1 !== 134217727) {
+ $ERROR('#38: 4294967295 >>> 37.1 === 134217727. Actual: ' + (4294967295 >>> 37.1));
+}
+
+//CHECK#39
+if (4294967295 >>> 38.1 !== 67108863) {
+ $ERROR('#39: 4294967295 >>> 38.1 === 67108863. Actual: ' + (4294967295 >>> 38.1));
+}
+
+//CHECK#40
+if (4294967295 >>> 39.1 !== 33554431) {
+ $ERROR('#40: 4294967295 >>> 39.1 === 33554431. Actual: ' + (4294967295 >>> 39.1));
+}
+
+//CHECK#41
+if (4294967295 >>> 40.1 !== 16777215) {
+ $ERROR('#41: 4294967295 >>> 40.1 === 16777215. Actual: ' + (4294967295 >>> 40.1));
+}
+
+//CHECK#42
+if (4294967295 >>> 41.1 !== 8388607) {
+ $ERROR('#42: 4294967295 >>> 41.1 === 8388607. Actual: ' + (4294967295 >>> 41.1));
+}
+
+//CHECK#43
+if (4294967295 >>> 42.1 !== 4194303) {
+ $ERROR('#43: 4294967295 >>> 42.1 === 4194303. Actual: ' + (4294967295 >>> 42.1));
+}
+
+//CHECK#44
+if (4294967295 >>> 43.1 !== 2097151) {
+ $ERROR('#44: 4294967295 >>> 43.1 === 2097151. Actual: ' + (4294967295 >>> 43.1));
+}
+
+//CHECK#45
+if (4294967295 >>> 44.1 !== 1048575) {
+ $ERROR('#45: 4294967295 >>> 44.1 === 1048575. Actual: ' + (4294967295 >>> 44.1));
+}
+
+//CHECK#46
+if (4294967295 >>> 45.1 !== 524287) {
+ $ERROR('#46: 4294967295 >>> 45.1 === 524287. Actual: ' + (4294967295 >>> 45.1));
+}
+
+//CHECK#47
+if (4294967295 >>> 46.1 !== 262143) {
+ $ERROR('#47: 4294967295 >>> 46.1 === 262143. Actual: ' + (4294967295 >>> 46.1));
+}
+
+//CHECK#48
+if (4294967295 >>> 47.1 !== 131071) {
+ $ERROR('#48: 4294967295 >>> 47.1 === 131071. Actual: ' + (4294967295 >>> 47.1));
+}
+
+//CHECK#49
+if (4294967295 >>> 48.1 !== 65535) {
+ $ERROR('#49: 4294967295 >>> 48.1 === 65535. Actual: ' + (4294967295 >>> 48.1));
+}
+
+//CHECK#50
+if (4294967295 >>> 49.1 !== 32767) {
+ $ERROR('#50: 4294967295 >>> 49.1 === 32767. Actual: ' + (4294967295 >>> 49.1));
+}
+
+//CHECK#51
+if (4294967295 >>> 50.1 !== 16383) {
+ $ERROR('#51: 4294967295 >>> 50.1 === 16383. Actual: ' + (4294967295 >>> 50.1));
+}
+
+//CHECK#52
+if (4294967295 >>> 51.1 !== 8191) {
+ $ERROR('#52: 4294967295 >>> 51.1 === 8191. Actual: ' + (4294967295 >>> 51.1));
+}
+
+//CHECK#53
+if (4294967295 >>> 52.1 !== 4095) {
+ $ERROR('#53: 4294967295 >>> 52.1 === 4095. Actual: ' + (4294967295 >>> 52.1));
+}
+
+//CHECK#54
+if (4294967295 >>> 53.1 !== 2047) {
+ $ERROR('#54: 4294967295 >>> 53.1 === 2047. Actual: ' + (4294967295 >>> 53.1));
+}
+
+//CHECK#55
+if (4294967295 >>> 54.1 !== 1023) {
+ $ERROR('#55: 4294967295 >>> 54.1 === 1023. Actual: ' + (4294967295 >>> 54.1));
+}
+
+//CHECK#56
+if (4294967295 >>> 55.1 !== 511) {
+ $ERROR('#56: 4294967295 >>> 55.1 === 511. Actual: ' + (4294967295 >>> 55.1));
+}
+
+//CHECK#57
+if (4294967295 >>> 56.1 !== 255) {
+ $ERROR('#57: 4294967295 >>> 56.1 === 255. Actual: ' + (4294967295 >>> 56.1));
+}
+
+//CHECK#58
+if (4294967295 >>> 57.1 !== 127) {
+ $ERROR('#58: 4294967295 >>> 57.1 === 127. Actual: ' + (4294967295 >>> 57.1));
+}
+
+//CHECK#59
+if (4294967295 >>> 58.1 !== 63) {
+ $ERROR('#59: 4294967295 >>> 58.1 === 63. Actual: ' + (4294967295 >>> 58.1));
+}
+
+//CHECK#60
+if (4294967295 >>> 59.1 !== 31) {
+ $ERROR('#60: 4294967295 >>> 59.1 === 31. Actual: ' + (4294967295 >>> 59.1));
+}
+
+//CHECK#61
+if (4294967295 >>> 60.1 !== 15) {
+ $ERROR('#61: 4294967295 >>> 60.1 === 15. Actual: ' + (4294967295 >>> 60.1));
+}
+
+//CHECK#62
+if (4294967295 >>> 61.1 !== 7) {
+ $ERROR('#62: 4294967295 >>> 61.1 === 7. Actual: ' + (4294967295 >>> 61.1));
+}
+
+//CHECK#63
+if (4294967295 >>> 62.1 !== 3) {
+ $ERROR('#63: 4294967295 >>> 62.1 === 3. Actual: ' + (4294967295 >>> 62.1));
+}
+
+//CHECK#64
+if (4294967295 >>> 63.1 !== 1) {
+ $ERROR('#64: 4294967295 >>> 63.1 === 1. Actual: ' + (4294967295 >>> 63.1));
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A1.js
new file mode 100644
index 000000000..85b40a593
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A1;
+* @section: 11.8.1, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between RelationalExpression and "<" or between "<" and ShiftExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("0\u0009<\u00091") !== true) {
+ $ERROR('#1: (0\\u0009<\\u00091) === true');
+}
+
+//CHECK#2
+if (eval("0\u000B<\u000B1") !== true) {
+ $ERROR('#2: (0\\u000B<\\u000B1) === true');
+}
+
+//CHECK#3
+if (eval("0\u000C<\u000C1") !== true) {
+ $ERROR('#3: (0\\u000C<\\u000C1) === true');
+}
+
+//CHECK#4
+if (eval("0\u0020<\u00201") !== true) {
+ $ERROR('#4: (0\\u0020<\\u00201) === true');
+}
+
+//CHECK#5
+if (eval("0\u00A0<\u00A01") !== true) {
+ $ERROR('#5: (0\\u00A0<\\u00A01) === true');
+}
+
+//CHECK#6
+if (eval("0\u000A<\u000A1") !== true) {
+ $ERROR('#6: (0\\u000A<\\u000A1) === true');
+}
+
+//CHECK#7
+if (eval("0\u000D<\u000D1") !== true) {
+ $ERROR('#7: (0\\u000D<\\u000D1) === true');
+}
+
+//CHECK#8
+if (eval("0\u2028<\u20281") !== true) {
+ $ERROR('#8: (0\\u2028<\\u20281) === true');
+}
+
+//CHECK#9
+if (eval("0\u2029<\u20291") !== true) {
+ $ERROR('#9: (0\\u2029<\\u20291) === true');
+}
+
+//CHECK#10
+if (eval("0\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029<\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== true) {
+ $ERROR('#10: (0\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029<\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T1.js
new file mode 100644
index 000000000..1bae3554b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A2.1_T1;
+* @section: 11.8.1, 11.8.5;
+* @assertion: Operator x < y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (1 < 2 !== true) {
+ $ERROR('#1: 1 < 2 === true');
+}
+
+//CHECK#2
+var x = 1;
+if (x < 2 !== true) {
+ $ERROR('#2: var x = 1; x < 2 === true');
+}
+
+//CHECK#3
+var y = 2;
+if (1 < y !== true) {
+ $ERROR('#3: var y = 2; 1 < y === true');
+}
+
+//CHECK#4
+var x = 1;
+var y = 2;
+if (x < y !== true) {
+ $ERROR('#4: var x = 1; var y = 2; x < y === true');
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 2;
+if (objectx.prop < objecty.prop !== true) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 2; objectx.prop < objecty.prop === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T2.js
new file mode 100644
index 000000000..9f80a2086
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A2.1_T2;
+ * @section: 11.8.1, 11.8.5;
+ * @assertion: Operator x < y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x < 1;
+ $ERROR('#1.1: x < 1 throw ReferenceError. Actual: ' + (x < 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x < 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T3.js
new file mode 100644
index 000000000..b910103d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A2.1_T3;
+ * @section: 11.8.1, 11.8.5;
+ * @assertion: Operator x < y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 < y;
+ $ERROR('#1.1: 1 < y throw ReferenceError. Actual: ' + (1 < y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 < y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.2_T1.js
new file mode 100644
index 000000000..4e30f6530
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A2.2_T1;
+ * @section: 11.8.1, 8.6.2.6;
+ * @assertion: Operator x < y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return 0}} < 1 !== true) {
+ $ERROR('#1: {valueOf: function() {return 1}} < 1 === true. Actual: ' + ({valueOf: function() {return 1}} < 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 0}, toString: function() {return 2}} < 1 !== true) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 0}} < 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 0}} < 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 0}, toString: function() {return {}}} < 1 !== true) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} < 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} < 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 0}, toString: function() {throw "error"}} < 1 !== true) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} < 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} < 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 0}, toString: function() {throw "error"}} < 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 0}, toString: function() {throw "error"}} < 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 < {toString: function() {return 2}} !== true) {
+ $ERROR('#5: 1 < {toString: function() {return 2}} === true. Actual: ' + (1 < {toString: function() {return 2}}));
+}
+
+//CHECK#6
+if (1 < {valueOf: function() {return {}}, toString: function() {return 2}} !== true) {
+ $ERROR('#6: 1 < {valueOf: function() {return {}}, toString: function() {return 2}} === true. Actual: ' + (1 < {valueOf: function() {return {}}, toString: function() {return 2}}));
+}
+
+//CHECK#7
+try {
+ 1 < {valueOf: function() {throw "error"}, toString: function() {return 2}};
+ $ERROR('#7.1: 1 < {valueOf: function() {throw "error"}, toString: function() {return 2}} throw "error". Actual: ' + (1 < {valueOf: function() {throw "error"}, toString: function() {return 2}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 < {valueOf: function() {throw "error"}, toString: function() {return 2}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 < {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 < {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 < {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 < {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.3_T1.js
new file mode 100644
index 000000000..46c9c52d7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A2.3_T1;
+ * @section: 11.8.1;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x < y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x < y throw "x". Actual: ' + (x < y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToNumber(first expression) is called first, and then ToNumber(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x < y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T1.js
new file mode 100644
index 000000000..8427bb10e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A2.4_T1;
+ * @section: 11.8.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 1;
+if ((x = 0) < x !== false) {
+ $ERROR('#1: var x = 1; (x = 0) < x === false');
+}
+
+//CHECK#2
+var x = 0;
+if (x < (x = 1) !== true) {
+ $ERROR('#2: var x = 0; x < (x = 1) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T2.js
new file mode 100644
index 000000000..65d2141eb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A2.4_T2;
+ * @section: 11.8.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() < y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() < y() throw "x". Actual: ' + (x() < y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() < y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T3.js
new file mode 100644
index 000000000..dd03a26a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A2.4_T3;
+ * @section: 11.8.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x < (x = 1);
+ $ERROR('#1.1: x < (x = 1) throw ReferenceError. Actual: ' + (x < (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x < (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) < y !== false) {
+ $ERROR('#2: (y = 1) < y === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.1.js
new file mode 100644
index 000000000..b24177cbf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T1.1;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true < true !== false) {
+ $ERROR('#1: true < true === false');
+}
+
+//CHECK#2
+if (new Boolean(true) < true !== false) {
+ $ERROR('#2: new Boolean(true) < true === false');
+}
+
+//CHECK#3
+if (true < new Boolean(true) !== false) {
+ $ERROR('#3: true < new Boolean(true) === false');
+}
+
+//CHECK#4
+if (new Boolean(true) < new Boolean(true) !== false) {
+ $ERROR('#4: new Boolean(true) < new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.2.js
new file mode 100644
index 000000000..d924aa166
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T1.2;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 < 1 !== false) {
+ $ERROR('#1: 1 < 1 === false');
+}
+
+//CHECK#2
+if (new Number(1) < 1 !== false) {
+ $ERROR('#2: new Number(1) < 1 === false');
+}
+
+//CHECK#3
+if (1 < new Number(1) !== false) {
+ $ERROR('#3: 1 < new Number(1) === false');
+}
+
+//CHECK#4
+if (new Number(1) < new Number(1) !== false) {
+ $ERROR('#4: new Number(1) < new Number(1) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.3.js
new file mode 100644
index 000000000..fff96eba4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T1.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T1.3;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (null < undefined !== false) {
+ $ERROR('#1: null < undefined === false');
+}
+
+//CHECK#2
+if (undefined < null !== false) {
+ $ERROR('#2: undefined < null === false');
+}
+
+//CHECK#3
+if (undefined < undefined !== false) {
+ $ERROR('#3: undefined < undefined === false');
+}
+
+//CHECK#4
+if (null < null !== false) {
+ $ERROR('#4: null < null === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.1.js
new file mode 100644
index 000000000..812fb63a2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T2.1;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types are Number (primitive or object) or Boolean (primitive and object);
+ */
+
+//CHECK#1
+if (true < 1 !== false) {
+ $ERROR('#1: true < 1 === false');
+}
+
+//CHECK#2
+if (1 < true !== false) {
+ $ERROR('#2: 1 < true === false');
+}
+
+//CHECK#3
+if (new Boolean(true) < 1 !== false) {
+ $ERROR('#3: new Boolean(true) < 1 === false');
+}
+
+//CHECK#4
+if (1 < new Boolean(true) !== false) {
+ $ERROR('#4: 1 < new Boolean(true) === false');
+}
+
+//CHECK#5
+if (true < new Number(1) !== false) {
+ $ERROR('#5: true < new Number(1) === false');
+}
+
+//CHECK#6
+if (new Number(1) < true !== false) {
+ $ERROR('#6: new Number(1) < true === false');
+}
+
+//CHECK#7
+if (new Boolean(true) < new Number(1) !== false) {
+ $ERROR('#7: new Boolean(true) < new Number(1) === false');
+}
+
+//CHECK#8
+if (new Number(1) < new Boolean(true) !== false) {
+ $ERROR('#8: new Number(1) < new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.2.js
new file mode 100644
index 000000000..78fef1158
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T2.2;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" < 1 !== false) {
+ $ERROR('#1: "1" < 1 === false');
+}
+
+//CHECK#2
+if (1 < "1" !== false) {
+ $ERROR('#2: 1 < "1" === false');
+}
+
+//CHECK#3
+if (new String("1") < 1 !== false) {
+ $ERROR('#3: new String("1") < 1 === false');
+}
+
+//CHECK#4
+if (1 < new String("1") !== false) {
+ $ERROR('#4: 1 < new String("1") === false');
+}
+
+//CHECK#5
+if ("1" < new Number(1) !== false) {
+ $ERROR('#5: "1" < new Number(1) === false');
+}
+
+//CHECK#6
+if (new Number(1) < "1" !== false) {
+ $ERROR('#6: new Number(1) < "1" === false');
+}
+
+//CHECK#7
+if (new String("1") < new Number(1) !== false) {
+ $ERROR('#7: new String("1") < new Number(1) === false');
+}
+
+//CHECK#8
+if (new Number(1) < new String("1") !== false) {
+ $ERROR('#8: new Number(1) < new String("1") === false');
+}
+
+//CHECK#9
+if ("x" < 1 !== false) {
+ $ERROR('#9: "x" < 1 === false');
+}
+
+//CHECK#10
+if (1 < "x" !== false) {
+ $ERROR('#10: 1 < "x" === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.3.js
new file mode 100644
index 000000000..278bfefb7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T2.3;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 < null !== false) {
+ $ERROR('#1: 1 < null === false');
+}
+
+//CHECK#2
+if (null < 1 !== true) {
+ $ERROR('#2: null < 1 === true');
+}
+
+//CHECK#3
+if (new Number(1) < null !== false) {
+ $ERROR('#3: new Number(1) < null === false');
+}
+
+//CHECK#4
+if (null < new Number(1) !== true) {
+ $ERROR('#4: null < new Number(1) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.4.js
new file mode 100644
index 000000000..d33c4c52d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T2.4;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (1 < undefined !== false) {
+ $ERROR('#1: 1 < undefined === false');
+}
+
+//CHECK#2
+if (undefined < 1 !== false) {
+ $ERROR('#2: undefined < 1 === false');
+}
+
+//CHECK#3
+if (new Number(1) < undefined !== false) {
+ $ERROR('#3: new Number(1) < undefined === false');
+}
+
+//CHECK#4
+if (undefined < new Number(1) !== false) {
+ $ERROR('#4: undefined < new Number(1) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.5.js
new file mode 100644
index 000000000..569aa8f22
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T2.5;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true < "1" !== false) {
+ $ERROR('#1: true < "1" === false');
+}
+
+//CHECK#2
+if ("1" < true !== false) {
+ $ERROR('#2: "1" < true === false');
+}
+
+//CHECK#3
+if (new Boolean(true) < "1" !== false) {
+ $ERROR('#3: new Boolean(true) < "1" === false');
+}
+
+//CHECK#4
+if ("1" < new Boolean(true) !== false) {
+ $ERROR('#4: "1" < new Boolean(true) === false');
+}
+
+//CHECK#5
+if (true < new String("1") !== false) {
+ $ERROR('#5: true < new String("1") === false');
+}
+
+//CHECK#6
+if (new String("1") < true !== false) {
+ $ERROR('#6: new String("1") < true === false');
+}
+
+//CHECK#7
+if (new Boolean(true) < new String("1") !== false) {
+ $ERROR('#7: new Boolean(true) < new String("1") === false');
+}
+
+//CHECK#8
+if (new String("1") < new Boolean(true) !== false) {
+ $ERROR('#8: new String("1") < new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.6.js
new file mode 100644
index 000000000..8eb8c4d68
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T2.6;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ("1" < undefined !== false) {
+ $ERROR('#1: "1" < undefined === false');
+}
+
+//CHECK#2
+if (undefined < "1" !== false) {
+ $ERROR('#2: undefined < "1" === false');
+}
+
+//CHECK#3
+if (new String("1") < undefined !== false) {
+ $ERROR('#3: new String("1") < undefined === false');
+}
+
+//CHECK#4
+if (undefined < new String("1") !== false) {
+ $ERROR('#4: undefined < new String("1") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.7.js
new file mode 100644
index 000000000..6ecab8f71
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T2.7;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" < null !== false) {
+ $ERROR('#1: "1" < null === false');
+}
+
+//CHECK#2
+if (null < "1" !== true) {
+ $ERROR('#2: null < "1" === true');
+}
+
+//CHECK#3
+if (new String("1") < null !== false) {
+ $ERROR('#3: new String("1") < null === false');
+}
+
+//CHECK#4
+if (null < new String("1") !== true) {
+ $ERROR('#4: null < new String("1") === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.8.js
new file mode 100644
index 000000000..0a250d3c6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T2.8;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (true < undefined !== false) {
+ $ERROR('#1: true < undefined === false');
+}
+
+//CHECK#2
+if (undefined < true !== false) {
+ $ERROR('#2: undefined < true === false');
+}
+
+//CHECK#3
+if (new Boolean(true) < undefined !== false) {
+ $ERROR('#3: new Boolean(true) < undefined === false');
+}
+
+//CHECK#4
+if (undefined < new Boolean(true) !== false) {
+ $ERROR('#4: undefined < new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.9.js
new file mode 100644
index 000000000..e67f97428
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.1_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.1_T2.9;
+ * @section: 11.8.1;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x < y returns ToNumber(x) < ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true < null !== false) {
+ $ERROR('#1: true < null === false');
+}
+
+//CHECK#2
+if (null < true !== true) {
+ $ERROR('#2: null < true === true');
+}
+
+//CHECK#3
+if (new Boolean(true) < null !== false) {
+ $ERROR('#3: new Boolean(true) < null === false');
+}
+
+//CHECK#4
+if (null < new Boolean(true) !== true) {
+ $ERROR('#4: null < new Boolean(true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.2_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.2_T1.1.js
new file mode 100644
index 000000000..8be0500e6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.2_T1.1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.2_T1.1;
+ * @section: 11.8.1;
+ * @assertion: Operator x < y returns ToString(x) < ToString(y), if Type(Primitive(x)) is String and Type(Primitive(y)) is String;
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" < "1" !== false) {
+ $ERROR('#1: "1" < "1" === false');
+}
+
+//CHECK#2
+if (new String("1") < "1" !== false) {
+ $ERROR('#2: new String("1") < "1" === false');
+}
+
+//CHECK#3
+if ("1" < new String("1") !== false) {
+ $ERROR('#3: "1" < new String("1") === false');
+}
+
+//CHECK#4
+if (new String("1") < new String("1") !== false) {
+ $ERROR('#4: new String("1") < new String("1") === false');
+}
+
+//CHECK#5
+if ("x" < "1" !== false) {
+ $ERROR('#5: "x" < "1" === false');
+}
+
+//CHECK#6
+if ("1" < "x" !== true) {
+ $ERROR('#6: "1" < "x" === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.2_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.2_T1.2.js
new file mode 100644
index 000000000..16a52aa26
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A3.2_T1.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.1_A3.2_T1.2;
+ * @section: 11.8.1;
+ * @assertion: Operator x < y returns ToString(x) < ToString(y), if Type(Primitive(x)) is String and Type(Primitive(y)) is String;
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (({} < function(){return 1}) !== ({}.toString() < function(){return 1}.toString())) {
+ $ERROR('#1: ({} < function(){return 1}) === ({}.toString() < function(){return 1}.toString())');
+}
+
+//CHECK#2
+if ((function(){return 1} < {}) !== (function(){return 1}.toString() < {}.toString())) {
+ $ERROR('#2: (function(){return 1} < {}) === (function(){return 1}.toString() < {}.toString())');
+}
+
+//CHECK#3
+if ((function(){return 1} < function(){return 1}) !== (function(){return 1}.toString() < function(){return 1}.toString())) {
+ $ERROR('#3: (function(){return 1} < function(){return 1}) === (function(){return 1}.toString() < function(){return 1}.toString())');
+}
+
+//CHECK#4
+if (({} < {}) !== ({}.toString() < {}.toString())) {
+ $ERROR('#4: ({} < {}) === ({}.toString() < {}.toString())');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.1.js
new file mode 100644
index 000000000..b6a0847b0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.1.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.1;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If x is NaN, return false (if result in 11.8.5 is undefined, return false);
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.NaN < 0) !== false) {
+ $ERROR('#1: (NaN < 0) === false');
+}
+
+//CHECK#2
+if ((Number.NaN < 1.1) !== false) {
+ $ERROR('#2: (NaN < 1.1) === false');
+}
+
+//CHECK#3
+if ((Number.NaN < -1.1) !== false) {
+ $ERROR('#3: (NaN < -1.1) === false');
+}
+
+//CHECK#4
+if ((Number.NaN < Number.NaN) !== false) {
+ $ERROR('#4: (NaN < NaN) === false');
+}
+
+//CHECK#5
+if ((Number.NaN < Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#5: (NaN < +Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.NaN < Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#6: (NaN < -Infinity) === false');
+}
+
+//CHECK#7
+if ((Number.NaN < Number.MAX_VALUE) !== false) {
+ $ERROR('#7: (NaN < Number.MAX_VALUE) === false');
+}
+
+//CHECK#8
+if ((Number.NaN < Number.MIN_VALUE) !== false) {
+ $ERROR('#8: (NaN < Number.MIN_VALUE) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.10.js
new file mode 100644
index 000000000..5949774ec
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.10.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.10;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If y is a prefix of x, return false;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("x" < "x") !== false) {
+ $ERROR('#1: ("x" < "x") === false');
+}
+
+//CHECK#2
+if (("x" < "") !== false) {
+ $ERROR('#2: ("x" < "") === false');
+}
+
+//CHECK#3
+if (("abcd" < "ab") !== false) {
+ $ERROR('#3: ("abcd" < ab") === false');
+}
+
+//CHECK#4
+if (("abc\u0064" < "abcd") !== false) {
+ $ERROR('#4: ("abc\\u0064" < abcd") === false');
+}
+
+//CHECK#5
+if (("x" + "y" < "x") !== false) {
+ $ERROR('#5: ("x" + "y" < "x") === false');
+}
+
+//CHECK#6
+var x = "x";
+if ((x + "y" < x) !== false) {
+ $ERROR('#6: var x = "x"; (x + "y" < x) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.11.js
new file mode 100644
index 000000000..d0942f293
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.11.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.11;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If x is a prefix of y and x !== y, return true;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("x" < "x ") !== true) {
+ $ERROR('#1: ("x" < "x ") === true');
+}
+
+//CHECK#2
+if (("" < "x") !== true) {
+ $ERROR('#2: ("" < "x") === true');
+}
+
+//CHECK#3
+if (("ab" < "abcd") !== true) {
+ $ERROR('#3: ("ab" < abcd") === true');
+}
+
+//CHECK#4
+if (("abcd" < "abc\u0064") !== false) {
+ $ERROR('#4: ("abcd" < abc\\u0064") === false');
+}
+
+//CHECK#5
+if (("x" < "x" + "y") !== true) {
+ $ERROR('#5: ("x" < "x" + "y") === true');
+}
+
+//CHECK#6
+var x = "x";
+if ((x < x + "y") !== true) {
+ $ERROR('#6: var x = "x"; (x < x + "y") === true');
+}
+
+//CHECK#7
+if (("a\u0000" < "a\u0000a") !== true) {
+ $ERROR('#7: ("a\\u0000" < "a\\u0000a") === true');
+}
+
+//CHECK#8
+if (("x" < " x") !== false) {
+ $ERROR('#8: ("x" < " x") === false');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.12_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.12_T1.js
new file mode 100644
index 000000000..7a751c628
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.12_T1.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.12_T1;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If neither x, nor y is a prefix of each other, returned result of strings comparison applies a simple lexicographic ordering to the sequences of code point value values;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("xx" < "xy") !== true) {
+ $ERROR('#1: ("xx" < "xy") === true');
+}
+
+//CHECK#2
+if (("xy" < "xx") !== false) {
+ $ERROR('#2: ("xy" < "xx") === false');
+}
+
+//CHECK#3
+if (("x" < "y") !== true) {
+ $ERROR('#3: ("x" < y") === true');
+}
+
+//CHECK#4
+if (("aab" < "aba") !== true) {
+ $ERROR('#4: ("aab" < aba") === true');
+}
+
+//CHECK#5
+if (("\u0061\u0061\u0061\u0062" < "\u0061\u0061\u0061\u0061") !== false) {
+ $ERROR('#5: ("\\u0061\\u0061\\u0061\\u0062" < \\u0061\\u0061\\u0061\\u0061") === false');
+}
+
+//CHECK#6
+if (("a\u0000a" < "a\u0000b") !== true) {
+ $ERROR('#6: ("a\\u0000a" < "a\\u0000b") === true');
+}
+
+//CHECK#7
+if (("aB" < "aa") !== true) {
+ $ERROR('#7: ("aB" < aa") === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.12_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.12_T2.js
new file mode 100644
index 000000000..e473f00e6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.12_T2.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.12_T2;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If neither x, nor y is a prefix of each other, returned result of strings comparison applies a simple lexicographic ordering to the sequences of code point value values;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("0" < "x") !== true) {
+ $ERROR('#1: ("0" < "x") !== true');
+}
+
+//CHECK#2
+if (("-" < "0") !== true) {
+ $ERROR('#2: ("-" < "0") !== true');
+}
+
+//CHECK#3
+if (("." < "0") !== true) {
+ $ERROR('#3: ("." < "0") !== true');
+}
+
+//CHECK#4
+if (("+" < "-") !== true) {
+ $ERROR('#4: ("+" < "-") !== true');
+}
+
+//CHECK#5
+if (("-0" < "-1") !== true) {
+ $ERROR('#5: ("-0" < "-1") !== true');
+}
+
+//CHECK#6
+if (("+1" < "-1") !== true) {
+ $ERROR('#6: ("+1" < "-1") !== true');
+}
+
+//CHECK#7
+if (("1" < "1e-10") !== true) {
+$ERROR('#7: ("1" < "1e-10") !== true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.2.js
new file mode 100644
index 000000000..b9d99d474
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.2.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.2;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If y is NaN, return false (if result in 11.8.5 is undefined, return false);
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 < Number.NaN) !== false) {
+ $ERROR('#1: (0 < NaN) === false');
+}
+
+//CHECK#2
+if ((1.1 < Number.NaN) !== false) {
+ $ERROR('#2: (1.1 < NaN) === false');
+}
+
+//CHECK#3
+if ((-1.1 < Number.NaN) !== false) {
+ $ERROR('#3: (-1.1 < NaN) === false');
+}
+
+//CHECK#4
+if ((Number.NaN < Number.NaN) !== false) {
+ $ERROR('#4: (NaN < NaN) === false');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY < Number.NaN) !== false) {
+ $ERROR('#5: (+Infinity < NaN) === false');
+}
+
+//CHECK#6
+if ((Number.NEGATIVE_INFINITY < Number.NaN) !== false) {
+ $ERROR('#6: (-Infinity < NaN) === false');
+}
+
+//CHECK#7
+if ((Number.MAX_VALUE < Number.NaN) !== false) {
+ $ERROR('#7: (Number.MAX_VALUE < NaN) === false');
+}
+
+//CHECK#8
+if ((Number.MIN_VALUE < Number.NaN) !== false) {
+ $ERROR('#8: (Number.MIN_VALUE < NaN) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.3.js
new file mode 100644
index 000000000..d7fd23ccd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.3.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.3;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If x and y are the same number value, return false;
+* @description: x and y are number primitives;
+*/
+
+//CHECK#1
+if ((1 < 1) !== false) {
+ $ERROR('#1: (1 < 1) === false');
+}
+
+//CHECK#2
+if ((1.1 < 1.1) !== false) {
+ $ERROR('#2: (1.1 < 1.1) === false');
+}
+
+//CHECK#3
+if ((-1.1 < -1.1) !== false) {
+ $ERROR('#3: (-1.1 < -1.1) === false');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY < Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#4: (-Infinity < -Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY < Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#5: (+Infinity < +Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.MAX_VALUE < Number.MAX_VALUE) !== false) {
+ $ERROR('#6: (Number.MAX_VALUE < Number.MAX_VALUE) === false');
+}
+
+//CHECK#7
+if ((Number.MIN_VALUE < Number.MIN_VALUE) !== false) {
+ $ERROR('#7: (Number.MIN_VALUE < Number.MIN_VALUE) === false');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.4.js
new file mode 100644
index 000000000..fc8048fce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.4.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.4;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If x and y are +0 and -0, return false;
+* @description: Checking all combinations;
+*/
+
+//CHECK#1
+if ((0 < 0) !== false) {
+ $ERROR('#1: (0 < 0) === false');
+}
+
+//CHECK#2
+if ((-0 < -0) !== false) {
+ $ERROR('#2: (-0 < -0) === false');
+}
+
+//CHECK#3
+if ((+0 < -0) !== false) {
+ $ERROR('#3: (+0 < -0) === false');
+}
+
+//CHECK#4
+if ((-0 < +0) !== false) {
+ $ERROR('#4: (-0 < +0) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.5.js
new file mode 100644
index 000000000..07b13e6f4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.5.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.5;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If x is +Infinity, return false;
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.POSITIVE_INFINITY < 0) !== false) {
+ $ERROR('#1: (+Infinity < 0) === false');
+}
+
+//CHECK#2
+if ((Number.POSITIVE_INFINITY < 1.1) !== false) {
+ $ERROR('#2: (+Infinity < 1.1) === false');
+}
+
+//CHECK#3
+if ((Number.POSITIVE_INFINITY < -1.1) !== false) {
+ $ERROR('#3: (+Infinity < -1.1) === false');
+}
+
+//CHECK#4
+if ((Number.POSITIVE_INFINITY < Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#4: (+Infinity < -Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY < Number.MAX_VALUE) !== false) {
+ $ERROR('#5: (+Infinity < Number.MAX_VALUE) === false');
+}
+
+//CHECK#6
+if ((Number.POSITIVE_INFINITY < Number.MIN_VALUE) !== false) {
+ $ERROR('#6: (+Infinity < Number.MIN_VALUE) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.6.js
new file mode 100644
index 000000000..13073be10
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.6.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.6;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If y is +Infinity and x !== y, return true;
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 < Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#1: (0 < +Infinity) === true');
+}
+
+//CHECK#2
+if ((1.1 < Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#2: (1.1 < +Infinity) === true');
+}
+
+//CHECK#3
+if ((-1.1 < Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#3: (-1.1 < +Infinity) === true');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY < Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#4: (-Infinity < +Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.MAX_VALUE < Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#5: (Number.MAX_VALUE < +Infinity) === true');
+}
+
+//CHECK#6
+if ((Number.MIN_VALUE < Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#6: (Number.MIN_VALUE < +Infinity) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.7.js
new file mode 100644
index 000000000..f1a8b6be7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.7.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.7;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If x is -Infinity and x !== y, return true;
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.NEGATIVE_INFINITY < 0) !== true) {
+ $ERROR('#1: (-Infinity < 0) === true');
+}
+
+//CHECK#2
+if ((Number.NEGATIVE_INFINITY < 1.1) !== true) {
+ $ERROR('#2: (-Infinity < 1.1) === true');
+}
+
+//CHECK#3
+if ((Number.NEGATIVE_INFINITY < -1.1) !== true) {
+ $ERROR('#3: (-Infinity < -1.1) === true');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY < Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#4: (-Infinity < +Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.NEGATIVE_INFINITY < Number.MAX_VALUE) !== true) {
+ $ERROR('#5: (-Infinity < Number.MAX_VALUE) === true');
+}
+
+//CHECK#6
+if ((Number.NEGATIVE_INFINITY < Number.MIN_VALUE) !== true) {
+ $ERROR('#6: (-Infinity < Number.MIN_VALUE) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.8.js
new file mode 100644
index 000000000..dc4e00379
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.8;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If y is -Infinity, return false;
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 < Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#1: (0 < -Infinity) === false');
+}
+
+//CHECK#2
+if ((1.1 < Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#2: (1.1 < -Infinity) === false');
+}
+
+//CHECK#3
+if ((-1.1 < Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#3: (-1.1 < -Infinity) === false');
+}
+
+//CHECK#4
+if ((Number.POSITIVE_INFINITY < Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#4: (+Infinity < -Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.MAX_VALUE < Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#5: (Number.MAX_VALUE < -Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.MIN_VALUE < Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#6: (Number.MIN_VALUE < -Infinity) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.9.js
new file mode 100644
index 000000000..7aa63bfff
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.1_The_Less_than_Operator/S11.8.1_A4.9.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.1_A4.9;
+* @section: 11.8.1, 11.8.5;
+* @assertion: If x is less than y and these values are both finite non-zero, return true; otherwise, return false;
+* @description: x and y are number primitives;
+*/
+
+//CHECK#1
+if ((1.1 < 1) !== false) {
+ $ERROR('#1: (1.1 < 1) === false');
+}
+
+//CHECK#2
+if ((1 < 1.1) !== true) {
+ $ERROR('#2: (1 < 1.1) === true');
+}
+
+//CHECK#3
+if ((-1.1 < -1) !== true) {
+ $ERROR('#3: (-1.1 < -1) === true');
+}
+
+//CHECK#4
+if ((-1 < -1.1) !== false) {
+ $ERROR('#4: (-1 < -1.1) === false');
+}
+
+//CHECK#5
+if ((0 < 0.1) !== true) {
+ $ERROR('#5: (0 < 0.1) === true');
+}
+
+//CHECK#6
+if ((-0.1 < 0) !== true) {
+ $ERROR('#6: (-0.1 < 0) === true');
+}
+
+//CHECK#7
+if ((Number.MAX_VALUE/2 < Number.MAX_VALUE) !== true) {
+ $ERROR('#7: (Number.MAX_VALUE/2 < Number.MAX_VALUE) === true');
+}
+
+//CHECK#8
+if ((Number.MIN_VALUE < Number.MIN_VALUE*2) !== true) {
+ $ERROR('#8: (Number.MIN_VALUE < Number.MIN_VALUE*2) === true');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A1.js
new file mode 100644
index 000000000..b0ea8fe91
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A1;
+* @section: 11.8.2, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between RelationalExpression and ">" or ">" and ShiftExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("0\u0009>\u00091") !== false) {
+ $ERROR('#1: 0\\u0009>\\u00091) === false');
+}
+
+//CHECK#2
+if (eval("0\u000B>\u000B1") !== false) {
+ $ERROR('#2: 0\\u000B>\\u000B1) === false');
+}
+
+//CHECK#3
+if (eval("0\u000C>\u000C1") !== false) {
+ $ERROR('#3: (0\\u000C>\\u000C1) === false');
+}
+
+//CHECK#4
+if (eval("0\u0020>\u00201") !== false) {
+ $ERROR('#4: (0\\u0020>\\u00201) === false');
+}
+
+//CHECK#5
+if (eval("0\u00A0>\u00A01") !== false) {
+ $ERROR('#5: (0\\u00A0>\\u00A01) === false');
+}
+
+//CHECK#6
+if (eval("0\u000A>\u000A1") !== false) {
+ $ERROR('#6: (0\\u000A>\\u000A1) === false');
+}
+
+//CHECK#7
+if (eval("0\u000D>\u000D1") !== false) {
+ $ERROR('#7: (0\\u000D>\\u000D1) === false');
+}
+
+//CHECK#8
+if (eval("0\u2028>\u20281") !== false) {
+ $ERROR('#8: (0\\u2028>\\u20281) === false');
+}
+
+//CHECK#9
+if (eval("0\u2029>\u20291") !== false) {
+ $ERROR('#9: (0\\u2029>\\u20291) === false');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029>=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== true) {
+ $ERROR('#10: (1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029>=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T1.js
new file mode 100644
index 000000000..1e6e0ba8c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A2.1_T1;
+* @section: 11.8.2, 11.8.5;
+* @assertion: Operator x > y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (2 > 1 !== true) {
+ $ERROR('#1: 2 > 1 === true');
+}
+
+//CHECK#2
+var x = 2;
+if (x > 1 !== true) {
+ $ERROR('#2: var x = 2; x > 1 === true');
+}
+
+//CHECK#3
+var y = 1;
+if (2 > y !== true) {
+ $ERROR('#3: var y = 1; 2 > y === true');
+}
+
+//CHECK#4
+var x = 2;
+var y = 1;
+if (x > y !== true) {
+ $ERROR('#4: var x = 2; var y = 1; x > y === true');
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 2;
+objecty.prop = 1;
+if (objectx.prop > objecty.prop !== true) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 2; objecty.prop = 1; objectx.prop > objecty.prop === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T2.js
new file mode 100644
index 000000000..173eab055
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A2.1_T2;
+ * @section: 11.8.2, 11.8.5;
+ * @assertion: Operator x > y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x > 1;
+ $ERROR('#1.1: x > 1 throw ReferenceError. Actual: ' + (x > 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x > 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T3.js
new file mode 100644
index 000000000..b80115a6c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A2.1_T3;
+ * @section: 11.8.2, 11.8.5;
+ * @assertion: Operator x > y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 > y;
+ $ERROR('#1.1: 1 > y throw ReferenceError. Actual: ' + (1 > y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 > y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.2_T1.js
new file mode 100644
index 000000000..ebf1b0eba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A2.2_T1;
+ * @section: 11.8.2, 8.6.2.6;
+ * @assertion: Operator x > y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return 2}} > 1 !== true) {
+ $ERROR('#1: {valueOf: function() {return 1}} > 1 === true. Actual: ' + ({valueOf: function() {return 1}} > 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 2}, toString: function() {return 0}} > 1 !== true) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 2}} > 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 2}} > 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 2}, toString: function() {return {}}} > 1 !== true) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} > 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} > 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 2}, toString: function() {throw "error"}} > 1 !== true) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} > 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} > 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 2}, toString: function() {throw "error"}} > 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 2}, toString: function() {throw "error"}} > 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 > {toString: function() {return 0}} !== true) {
+ $ERROR('#5: 1 > {toString: function() {return 0}} === true. Actual: ' + (1 > {toString: function() {return 0}}));
+}
+
+//CHECK#6
+if (1 > {valueOf: function() {return {}}, toString: function() {return 0}} !== true) {
+ $ERROR('#6: 1 > {valueOf: function() {return {}}, toString: function() {return 0}} === true. Actual: ' + (1 > {valueOf: function() {return {}}, toString: function() {return 0}}));
+}
+
+//CHECK#7
+try {
+ 1 > {valueOf: function() {throw "error"}, toString: function() {return 0}};
+ $ERROR('#7.1: 1 > {valueOf: function() {throw "error"}, toString: function() {return 0}} throw "error". Actual: ' + (1 > {valueOf: function() {throw "error"}, toString: function() {return 0}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 > {valueOf: function() {throw "error"}, toString: function() {return 0}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 > {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 > {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 > {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 > {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.3_T1.js
new file mode 100644
index 000000000..a3d91e2cf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A2.3_T1;
+ * @section: 11.8.2;
+ * @assertion: ToNumber(second expression) is called first, and then ToNumber(first expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x > y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x > y throw "y". Actual: ' + (x > y));
+} catch (e) {
+ if (e === "x") {
+ $ERROR('#1.2: ToNumber(second expression) is called first, and then ToNumber(first expression)');
+ } else {
+ if (e !== "y") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x > y throw "y". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T1.js
new file mode 100644
index 000000000..4a8414f98
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A2.4_T1;
+ * @section: 11.8.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) > x !== false) {
+ $ERROR('#1: var x = 0; (x = 1) > x === false');
+}
+
+//CHECK#2
+var x = 1;
+if (x > (x = 0) !== true) {
+ $ERROR('#2: var x = 1; x > (x = 0) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T2.js
new file mode 100644
index 000000000..062a0690d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A2.4_T2;
+ * @section: 11.8.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() > y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() > y() throw "x". Actual: ' + (x() > y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() > y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T3.js
new file mode 100644
index 000000000..0c6df429e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A2.4_T3;
+ * @section: 11.8.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x > (x = 1);
+ $ERROR('#1.1: x > (x = 1) throw ReferenceError. Actual: ' + (x > (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x > (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) > y !== false) {
+ $ERROR('#2: (y = 1) > y === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.1.js
new file mode 100644
index 000000000..d61e4c0bd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T1.1;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true > true !== false) {
+ $ERROR('#1: true > true === false');
+}
+
+//CHECK#2
+if (new Boolean(true) > true !== false) {
+ $ERROR('#2: new Boolean(true) > true === false');
+}
+
+//CHECK#3
+if (true > new Boolean(true) !== false) {
+ $ERROR('#3: true > new Boolean(true) === false');
+}
+
+//CHECK#4
+if (new Boolean(true) > new Boolean(true) !== false) {
+ $ERROR('#4: new Boolean(true) > new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.2.js
new file mode 100644
index 000000000..bd9490f2d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T1.2;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 > 1 !== false) {
+ $ERROR('#1: 1 > 1 === false');
+}
+
+//CHECK#2
+if (new Number(1) > 1 !== false) {
+ $ERROR('#2: new Number(1) > 1 === false');
+}
+
+//CHECK#3
+if (1 > new Number(1) !== false) {
+ $ERROR('#3: 1 > new Number(1) === false');
+}
+
+//CHECK#4
+if (new Number(1) > new Number(1) !== false) {
+ $ERROR('#4: new Number(1) > new Number(1) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.3.js
new file mode 100644
index 000000000..acbdaa1bd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T1.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T1.3;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (null > undefined !== false) {
+ $ERROR('#1: null > undefined === false');
+}
+
+//CHECK#2
+if (undefined > null !== false) {
+ $ERROR('#2: undefined > null === false');
+}
+
+//CHECK#3
+if (undefined > undefined !== false) {
+ $ERROR('#3: undefined > undefined === false');
+}
+
+//CHECK#4
+if (null > null !== false) {
+ $ERROR('#4: null > null === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.1.js
new file mode 100644
index 000000000..27fd050e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T2.1;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if (true > 1 !== false) {
+ $ERROR('#1: true > 1 === false');
+}
+
+//CHECK#2
+if (1 > true !== false) {
+ $ERROR('#2: 1 > true === false');
+}
+
+//CHECK#3
+if (new Boolean(true) > 1 !== false) {
+ $ERROR('#3: new Boolean(true) > 1 === false');
+}
+
+//CHECK#4
+if (1 > new Boolean(true) !== false) {
+ $ERROR('#4: 1 > new Boolean(true) === false');
+}
+
+//CHECK#5
+if (true > new Number(1) !== false) {
+ $ERROR('#5: true > new Number(1) === false');
+}
+
+//CHECK#6
+if (new Number(1) > true !== false) {
+ $ERROR('#6: new Number(1) > true === false');
+}
+
+//CHECK#7
+if (new Boolean(true) > new Number(1) !== false) {
+ $ERROR('#7: new Boolean(true) > new Number(1) === false');
+}
+
+//CHECK#8
+if (new Number(1) > new Boolean(true) !== false) {
+ $ERROR('#8: new Number(1) > new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.2.js
new file mode 100644
index 000000000..3d5b95451
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T2.2;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" > 1 !== false) {
+ $ERROR('#1: "1" > 1 === false');
+}
+
+//CHECK#2
+if (1 > "1" !== false) {
+ $ERROR('#2: 1 > "1" === false');
+}
+
+//CHECK#3
+if (new String("1") > 1 !== false) {
+ $ERROR('#3: new String("1") > 1 === false');
+}
+
+//CHECK#4
+if (1 > new String("1") !== false) {
+ $ERROR('#4: 1 > new String("1") === false');
+}
+
+//CHECK#5
+if ("1" > new Number(1) !== false) {
+ $ERROR('#5: "1" > new Number(1) === false');
+}
+
+//CHECK#6
+if (new Number(1) > "1" !== false) {
+ $ERROR('#6: new Number(1) > "1" === false');
+}
+
+//CHECK#7
+if (new String("1") > new Number(1) !== false) {
+ $ERROR('#7: new String("1") > new Number(1) === false');
+}
+
+//CHECK#8
+if (new Number(1) > new String("1") !== false) {
+ $ERROR('#8: new Number(1) > new String("1") === false');
+}
+
+//CHECK#9
+if ("x" > 1 !== false) {
+ $ERROR('#9: "x" > 1 === false');
+}
+
+//CHECK#10
+if (1 > "x" !== false) {
+ $ERROR('#10: 1 > "x" === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.3.js
new file mode 100644
index 000000000..b02dda0aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T2.3;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 > null !== true) {
+ $ERROR('#1: 1 > null === true');
+}
+
+//CHECK#2
+if (null > 1 !== false) {
+ $ERROR('#2: null > 1 === false');
+}
+
+//CHECK#3
+if (new Number(1) > null !== true) {
+ $ERROR('#3: new Number(1) > null === true');
+}
+
+//CHECK#4
+if (null > new Number(1) !== false) {
+ $ERROR('#4: null > new Number(1) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.4.js
new file mode 100644
index 000000000..584be1496
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T2.4;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (1 > undefined !== false) {
+ $ERROR('#1: 1 > undefined === false');
+}
+
+//CHECK#2
+if (undefined > 1 !== false) {
+ $ERROR('#2: undefined > 1 === false');
+}
+
+//CHECK#3
+if (new Number(1) > undefined !== false) {
+ $ERROR('#3: new Number(1) > undefined === false');
+}
+
+//CHECK#4
+if (undefined > new Number(1) !== false) {
+ $ERROR('#4: undefined > new Number(1) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.5.js
new file mode 100644
index 000000000..ea806dc2f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T2.5;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true > "1" !== false) {
+ $ERROR('#1: true > "1" === false');
+}
+
+//CHECK#2
+if ("1" > true !== false) {
+ $ERROR('#2: "1" > true === false');
+}
+
+//CHECK#3
+if (new Boolean(true) > "1" !== false) {
+ $ERROR('#3: new Boolean(true) > "1" === false');
+}
+
+//CHECK#4
+if ("1" > new Boolean(true) !== false) {
+ $ERROR('#4: "1" > new Boolean(true) === false');
+}
+
+//CHECK#5
+if (true > new String("1") !== false) {
+ $ERROR('#5: true > new String("1") === false');
+}
+
+//CHECK#6
+if (new String("1") > true !== false) {
+ $ERROR('#6: new String("1") > true === false');
+}
+
+//CHECK#7
+if (new Boolean(true) > new String("1") !== false) {
+ $ERROR('#7: new Boolean(true) > new String("1") === false');
+}
+
+//CHECK#8
+if (new String("1") > new Boolean(true) !== false) {
+ $ERROR('#8: new String("1") > new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.6.js
new file mode 100644
index 000000000..c00a727a5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T2.6;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ("1" > undefined !== false) {
+ $ERROR('#1: "1" > undefined === false');
+}
+
+//CHECK#2
+if (undefined > "1" !== false) {
+ $ERROR('#2: undefined > "1" === false');
+}
+
+//CHECK#3
+if (new String("1") > undefined !== false) {
+ $ERROR('#3: new String("1") > undefined === false');
+}
+
+//CHECK#4
+if (undefined > new String("1") !== false) {
+ $ERROR('#4: undefined > new String("1") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.7.js
new file mode 100644
index 000000000..cc6d5b374
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T2.7;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" > null !== true) {
+ $ERROR('#1: "1" > null === true');
+}
+
+//CHECK#2
+if (null > "1" !== false) {
+ $ERROR('#2: null > "1" === false');
+}
+
+//CHECK#3
+if (new String("1") > null !== true) {
+ $ERROR('#3: new String("1") > null === true');
+}
+
+//CHECK#4
+if (null > new String("1") !== false) {
+ $ERROR('#4: null > new String("1") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.8.js
new file mode 100644
index 000000000..090c77504
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T2.8;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (true > undefined !== false) {
+ $ERROR('#1: true > undefined === false');
+}
+
+//CHECK#2
+if (undefined > true !== false) {
+ $ERROR('#2: undefined > true === false');
+}
+
+//CHECK#3
+if (new Boolean(true) > undefined !== false) {
+ $ERROR('#3: new Boolean(true) > undefined === false');
+}
+
+//CHECK#4
+if (undefined > new Boolean(true) !== false) {
+ $ERROR('#4: undefined > new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.9.js
new file mode 100644
index 000000000..abe87c639
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.1_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.1_T2.9;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x > y returns ToNumber(x) > ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true > null !== true) {
+ $ERROR('#1: true > null === true');
+}
+
+//CHECK#2
+if (null > true !== false) {
+ $ERROR('#2: null > true === false');
+}
+
+//CHECK#3
+if (new Boolean(true) > null !== true) {
+ $ERROR('#3: new Boolean(true) > null === true');
+}
+
+//CHECK#4
+if (null > new Boolean(true) !== false) {
+ $ERROR('#4: null > new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.2_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.2_T1.1.js
new file mode 100644
index 000000000..d2ff7bf33
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.2_T1.1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.2_T1.1;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is String and Type(Primitive(y)) is String, then operator x > y returns ToString(x) > ToString(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" > "1" !== false) {
+ $ERROR('#1: "1" > "1" === false');
+}
+
+//CHECK#2
+if (new String("1") > "1" !== false) {
+ $ERROR('#2: new String("1") > "1" === false');
+}
+
+//CHECK#3
+if ("1" > new String("1") !== false) {
+ $ERROR('#3: "1" > new String("1") === false');
+}
+
+//CHECK#4
+if (new String("1") > new String("1") !== false) {
+ $ERROR('#4: new String("1") > new String("1") === false');
+}
+
+//CHECK#5
+if ("x" > "1" !== true) {
+ $ERROR('#5: "x" > "1" === true');
+}
+
+//CHECK#6
+if ("1" > "x" !== false) {
+ $ERROR('#6: "1" > "x" === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.2_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.2_T1.2.js
new file mode 100644
index 000000000..c9ebb0215
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A3.2_T1.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.2_A3.2_T1.2;
+ * @section: 11.8.2;
+ * @assertion: If Type(Primitive(x)) is String and Type(Primitive(y)) is String, then operator x > y returns ToString(x) > ToString(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (({} > function(){return 1}) !== ({}.toString() > function(){return 1}.toString())) {
+ $ERROR('#1: ({} > function(){return 1}) === ({}.toString() > function(){return 1}.toString())');
+}
+
+//CHECK#2
+if ((function(){return 1} > {}) !== (function(){return 1}.toString() > {}.toString())) {
+ $ERROR('#2: (function(){return 1} > {}) === (function(){return 1}.toString() > {}.toString())');
+}
+
+//CHECK#3
+if ((function(){return 1} > function(){return 1}) !== (function(){return 1}.toString() > function(){return 1}.toString())) {
+ $ERROR('#3: (function(){return 1} > function(){return 1}) === (function(){return 1}.toString() > function(){return 1}.toString())');
+}
+
+//CHECK#4
+if (({} > {}) !== ({}.toString() > {}.toString())) {
+ $ERROR('#4: ({} > {}) === ({}.toString() > {}.toString())');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.1.js
new file mode 100644
index 000000000..e7d69fbe0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.1.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.1;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If x is NaN, return false (if result in 11.8.5 is undefined, return false);
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.NaN > 0) !== false) {
+ $ERROR('#1: (NaN > 0) === false');
+}
+
+//CHECK#2
+if ((Number.NaN > 1.1) !== false) {
+ $ERROR('#2: (NaN > 1.1) === false');
+}
+
+//CHECK#3
+if ((Number.NaN > -1.1) !== false) {
+ $ERROR('#3: (NaN > -1.1) === false');
+}
+
+//CHECK#4
+if ((Number.NaN > Number.NaN) !== false) {
+ $ERROR('#4: (NaN > NaN) === false');
+}
+
+//CHECK#5
+if ((Number.NaN > Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#5: (NaN > +Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.NaN > Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#6: (NaN > -Infinity) === false');
+}
+
+//CHECK#7
+if ((Number.NaN > Number.MAX_VALUE) !== false) {
+ $ERROR('#7: (NaN > Number.MAX_VALUE) === false');
+}
+
+//CHECK#8
+if ((Number.NaN > Number.MIN_VALUE) !== false) {
+ $ERROR('#8: (NaN > Number.MIN_VALUE) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.10.js
new file mode 100644
index 000000000..155e78398
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.10.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.10;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If x is a prefix of y, return false;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("x" > "x") !== false) {
+ $ERROR('#1: ("x" > "x") === false');
+}
+
+//CHECK#2
+if (("" > "x") !== false) {
+ $ERROR('#2: ("" > "x") === false');
+}
+
+//CHECK#3
+if (("ab" > "abcd") !== false) {
+ $ERROR('#3: ("ab" > abcd") === false');
+}
+
+//CHECK#4
+if (("abcd" > "abc\u0064") !== false) {
+ $ERROR('#4: ("abcd" > abc\\u0064") === false');
+}
+
+//CHECK#5
+if (("x" > "x" + "y") !== false) {
+ $ERROR('#5: ("x" > "x" + "y") === false');
+}
+
+//CHECK#6
+var x = "x";
+if ((x > x + "y") !== false) {
+ $ERROR('#6: var x = "x"; (x > x + "y") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.11.js
new file mode 100644
index 000000000..a5ebd3e36
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.11.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.11;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If y is a prefix of x and x !== y, return true;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("x " > "x") !== true) {
+ $ERROR('#1: ("x " > "x") === true');
+}
+
+//CHECK#2
+if (("x" > "") !== true) {
+ $ERROR('#2: ("x" > "") === true');
+}
+
+//CHECK#3
+if (("abcd" > "ab") !== true) {
+ $ERROR('#3: ("abcd" > ab") === true');
+}
+
+//CHECK#4
+if (("abc\u0064" > "abcd") !== false) {
+ $ERROR('#4: ("abc\\u0064" > abc") === false');
+}
+
+//CHECK#5
+if (("x" + "y" > "x") !== true) {
+ $ERROR('#5: ("x" + "y" > "x") === true');
+}
+
+//CHECK#6
+var x = "x";
+if ((x + 'y' > x) !== true) {
+ $ERROR('#6: var x = "x"; (x + "y" > x) === true');
+}
+
+//CHECK#7
+if (("a\u0000a" > "a\u0000") !== true) {
+ $ERROR('#7: ("a\\u0000a" > "a\\u0000") === true');
+}
+
+//CHECK#8
+if ((" x" > "x") !== false) {
+ $ERROR('#8: (" x" > "x") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.12_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.12_T1.js
new file mode 100644
index 000000000..cd8d393ca
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.12_T1.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.12_T1;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If neither x, nor y is a prefix of each other, returned result of strings comparison applies a simple lexicographic ordering to the sequences of code point value values;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("xy" > "xx") !== true) {
+ $ERROR('#1: ("xy" > "xx") === true');
+}
+
+//CHECK#2
+if (("xx" > "xy") !== false) {
+ $ERROR('#2: ("xx" > "xy") === false');
+}
+
+//CHECK#3
+if (("y" > "x") !== true) {
+ $ERROR('#3: ("y" > "x") === true');
+}
+
+//CHECK#4
+if (("aba" > "aab") !== true) {
+ $ERROR('#4: ("aba" > aab") === true');
+}
+
+//CHECK#5
+if (("\u0061\u0061\u0061\u0061" > "\u0061\u0061\u0061\u0062") !== false) {
+ $ERROR('#5: ("\\u0061\\u0061\\u0061\\u0061" > \\u0061\\u0061\\u0061\\u0062") === false');
+}
+
+//CHECK#6
+if (("a\u0000b" > "a\u0000a") !== true) {
+ $ERROR('#6: ("a\\u0000b" > "a\\u0000a") === true');
+}
+
+//CHECK#7
+if (("aa" > "aB") !== true) {
+ $ERROR('#7: ("aa" > aB") === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.12_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.12_T2.js
new file mode 100644
index 000000000..4ca285a7e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.12_T2.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.12_T2;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If neither x, nor y is a prefix of each other, returned result of strings comparison applies a simple lexicographic ordering to the sequences of code point value values;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("x" > "0") !== true) {
+ $ERROR('#1: ("x" > "0") !== true');
+}
+
+//CHECK#2
+if (("0" > "-") !== true) {
+ $ERROR('#2: ("0" > "-") !== true');
+}
+
+//CHECK#3
+if (("0" > ".") !== true) {
+ $ERROR('#3: ("0" > ".") !== true');
+}
+
+//CHECK#4
+if (("-" > "+") !== true) {
+ $ERROR('#4: ("-" > "+") !== true');
+}
+
+//CHECK#5
+if (("-1" > "-0") !== true) {
+ $ERROR('#5: ("-1" > "-0") !== true');
+}
+
+//CHECK#6
+if (("-1" > "+1") !== true) {
+ $ERROR('#6: ("-1" > "+1") !== true');
+}
+
+//CHECK#7
+if (("1e-10" > "1") !== true) {
+$ERROR('#7: ("1e-10" > "1") !== true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.2.js
new file mode 100644
index 000000000..1419dc125
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.2.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.2;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If y is NaN, return false (if result in 11.8.5 is undefined, return false);
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 > Number.NaN) !== false) {
+ $ERROR('#1: (0 > NaN) === false');
+}
+
+//CHECK#2
+if ((1.1 > Number.NaN) !== false) {
+ $ERROR('#2: (1.1 > NaN) === false');
+}
+
+//CHECK#3
+if ((-1.1 > Number.NaN) !== false) {
+ $ERROR('#3: (-1.1 > NaN) === false');
+}
+
+//CHECK#4
+if ((Number.NaN > Number.NaN) !== false) {
+ $ERROR('#4: (NaN > NaN) === false');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY > Number.NaN) !== false) {
+ $ERROR('#5: (+Infinity > NaN) === false');
+}
+
+//CHECK#6
+if ((Number.NEGATIVE_INFINITY > Number.NaN) !== false) {
+ $ERROR('#6: (-Infinity > NaN) === false');
+}
+
+//CHECK#7
+if ((Number.MAX_VALUE > Number.NaN) !== false) {
+ $ERROR('#7: (Number.MAX_VALUE > NaN) === false');
+}
+
+//CHECK#8
+if ((Number.MIN_VALUE > Number.NaN) !== false) {
+ $ERROR('#8: (Number.MIN_VALUE > NaN) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.3.js
new file mode 100644
index 000000000..8cbec29cf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.3.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.3;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If x and y are the same number value, return false;
+* @description: x and y are number primitives;
+*/
+
+//CHECK#1
+if ((1 > 1) !== false) {
+ $ERROR('#1: (1 > 1) === false');
+}
+
+//CHECK#2
+if ((1.1 > 1.1) !== false) {
+ $ERROR('#2: (1.1 > 1.1) === false');
+}
+
+//CHECK#3
+if ((-1.1 > -1.1) !== false) {
+ $ERROR('#3: (-1.1 > -1.1) === false');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY > Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#4: (-Infinity > -Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY > Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#5: (+Infinity > +Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.MAX_VALUE > Number.MAX_VALUE) !== false) {
+ $ERROR('#6: (Number.MAX_VALUE > Number.MAX_VALUE) === false');
+}
+
+//CHECK#7
+if ((Number.MIN_VALUE > Number.MIN_VALUE) !== false) {
+ $ERROR('#7: (Number.MIN_VALUE > Number.MIN_VALUE) === false');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.4.js
new file mode 100644
index 000000000..5998df7d0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.4.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.4;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If either variable x or y is +0 and the other is -0, return false;
+* @description: Checking all combinations;
+*/
+
+//CHECK#1
+if ((0 > 0) !== false) {
+ $ERROR('#1: (0 > 0) === false');
+}
+
+//CHECK#2
+if ((-0 > -0) !== false) {
+ $ERROR('#2: (-0 > -0) === false');
+}
+
+//CHECK#3
+if ((+0 > -0) !== false) {
+ $ERROR('#3: (+0 > -0) === false');
+}
+
+//CHECK#4
+if ((-0 > +0) !== false) {
+ $ERROR('#4: (-0 > +0) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.5.js
new file mode 100644
index 000000000..41c24a1b5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.5.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.5;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If x is +Infinity and x !== y, return true;
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.POSITIVE_INFINITY > 0) !== true) {
+ $ERROR('#1: (+Infinity > 0) === true');
+}
+
+//CHECK#2
+if ((Number.POSITIVE_INFINITY > 1.1) !== true) {
+ $ERROR('#2: (+Infinity > 1.1) === true');
+}
+
+//CHECK#3
+if ((Number.POSITIVE_INFINITY > -1.1) !== true) {
+ $ERROR('#3: (+Infinity > -1.1) === true');
+}
+
+//CHECK#4
+if ((Number.POSITIVE_INFINITY > Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#4: (+Infinity > -Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY > Number.MAX_VALUE) !== true) {
+ $ERROR('#5: (+Infinity > Number.MAX_VALUE) === true');
+}
+
+//CHECK#6
+if ((Number.POSITIVE_INFINITY > Number.MIN_VALUE) !== true) {
+ $ERROR('#6: (+Infinity > Number.MIN_VALUE) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.6.js
new file mode 100644
index 000000000..0477f3d8f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.6.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.6;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If y is +Infinity, return false;
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 > Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#1: (0 > +Infinity) === false');
+}
+
+//CHECK#2
+if ((1.1 > Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#2: (1.1 > +Infinity) === false');
+}
+
+//CHECK#3
+if ((-1.1 > Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#3: (-1.1 > +Infinity) === false');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY > Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#4: (-Infinity > +Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.MAX_VALUE > Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#5: (Number.MAX_VALUE > +Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.MIN_VALUE > Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#6: (Number.MIN_VALUE > +Infinity) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.7.js
new file mode 100644
index 000000000..0aec46a2f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.7.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.7;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If x is -Infinity, return false;
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.NEGATIVE_INFINITY > 0) !== false) {
+ $ERROR('#1: (-Infinity > 0) === false');
+}
+
+//CHECK#2
+if ((Number.NEGATIVE_INFINITY > 1.1) !== false) {
+ $ERROR('#2: (-Infinity > 1.1) === false');
+}
+
+//CHECK#3
+if ((Number.NEGATIVE_INFINITY > -1.1) !== false) {
+ $ERROR('#3: (-Infinity > -1.1) === false');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY > Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#4: (-Infinity > +Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.NEGATIVE_INFINITY > Number.MAX_VALUE) !== false) {
+ $ERROR('#5: (-Infinity > Number.MAX_VALUE) === false');
+}
+
+//CHECK#6
+if ((Number.NEGATIVE_INFINITY > Number.MIN_VALUE) !== false) {
+ $ERROR('#6: (-Infinity > Number.MIN_VALUE) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.8.js
new file mode 100644
index 000000000..df8d8c421
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.8;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If y is -Infinity and x !== y, return true;
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 > Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#1: (0 > -Infinity) === true');
+}
+
+//CHECK#2
+if ((1.1 > Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#2: (1.1 > -Infinity) === true');
+}
+
+//CHECK#3
+if ((-1.1 > Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#3: (-1.1 > -Infinity) === true');
+}
+
+//CHECK#4
+if ((Number.POSITIVE_INFINITY > Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#4: (+Infinity > -Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.MAX_VALUE > Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#5: (Number.MAX_VALUE > -Infinity) === true');
+}
+
+//CHECK#6
+if ((Number.MIN_VALUE > Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#6: (Number.MIN_VALUE > -Infinity) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.9.js
new file mode 100644
index 000000000..c2b192cd9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.2_The_Greater_than_Operator/S11.8.2_A4.9.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.2_A4.9;
+* @section: 11.8.2, 11.8.5;
+* @assertion: If is x greater than y and these values are both finite non-zero, return true; otherwise, return false;
+* @description: x and y are number primitives;
+*/
+
+//CHECK#1
+if ((1 > 1.1) !== false) {
+ $ERROR('#1: (1 > 1.1) === false');
+}
+
+//CHECK#2
+if ((1.1 > 1) !== true) {
+ $ERROR('#2: (1.1 > 1) === true');
+}
+
+//CHECK#3
+if ((-1 > -1.1) !== true) {
+ $ERROR('#3: (-1 > -1.1) === true');
+}
+
+//CHECK#4
+if ((-1.1 > -1) !== false) {
+ $ERROR('#4: (-1.1 > -1) === false');
+}
+
+//CHECK#5
+if ((0.1 > 0) !== true) {
+ $ERROR('#5: (0.1 > 0) === true');
+}
+
+//CHECK#6
+if ((0 > -0.1) !== true) {
+ $ERROR('#6: (0 > -0.1) === true');
+}
+
+//CHECK#7
+if ((Number.MAX_VALUE > Number.MAX_VALUE/2) !== true) {
+ $ERROR('#7: (Number.MAX_VALUE > Number.MAX_VALUE/2) === true');
+}
+
+//CHECK#8
+if ((Number.MIN_VALUE*2 > Number.MIN_VALUE) !== true) {
+ $ERROR('#8: (Number.MIN_VALUE*2 > Number.MIN_VALUE) === true');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A1.js
new file mode 100644
index 000000000..d440e0935
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A1;
+* @section: 11.8.3, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between RelationalExpression and "<=" or between "<=" and ShiftExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("1\u0009<=\u00091") !== true) {
+ $ERROR('#1: (1\\u0009<=\\u00091) === true');
+}
+
+//CHECK#2
+if (eval("1\u000B<=\u000B1") !== true) {
+ $ERROR('#2: (1\\u000B<=\\u000B1) === true');
+}
+
+//CHECK#3
+if (eval("1\u000C<=\u000C1") !== true) {
+ $ERROR('#3: (1\\u000C<=\\u000C1) === true');
+}
+
+//CHECK#4
+if (eval("1\u0020<=\u00201") !== true) {
+ $ERROR('#4: (1\\u0020<=\\u00201) === true');
+}
+
+//CHECK#5
+if (eval("1\u00A0<=\u00A01") !== true) {
+ $ERROR('#5: (1\\u00A0<=\\u00A01) === true');
+}
+
+//CHECK#6
+if (eval("1\u000A<=\u000A1") !== true) {
+ $ERROR('#6: (1\\u000A<=\\u000A1) === true');
+}
+
+//CHECK#7
+if (eval("1\u000D<=\u000D1") !== true) {
+ $ERROR('#7: (1\\u000D<=\\u000D1) === true');
+}
+
+//CHECK#8
+if (eval("1\u2028<=\u20281") !== true) {
+ $ERROR('#8: (1\\u2028<=\\u20281) === true');
+}
+
+//CHECK#9
+if (eval("1\u2029<=\u20291") !== true) {
+ $ERROR('#9: (1\\u2029<=\\u20291) === true');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029>\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20290") !== true) {
+ $ERROR('#10: (1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029>\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20290) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T1.js
new file mode 100644
index 000000000..c80563b2c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A2.1_T1;
+* @section: 11.8.3, 11.8.5;
+* @assertion: Operator x <= y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (1 <= 1 !== true) {
+ $ERROR('#1: 1 <= 1 === true');
+}
+
+//CHECK#2
+var x = 1;
+if (x <= 1 !== true) {
+ $ERROR('#2: var x = 1; x <= 1 === true');
+}
+
+//CHECK#3
+var y = 1;
+if (1 <= y !== true) {
+ $ERROR('#3: var y = 1; 1 <= y === true');
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if (x <= y !== true) {
+ $ERROR('#4: var x = 1; var y = 1; x <= y === true');
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if (objectx.prop <= objecty.prop !== true) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; objectx.prop <= objecty.prop === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T2.js
new file mode 100644
index 000000000..b7bb57e89
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A2.1_T2;
+ * @section: 11.8.3, 11.8.5;
+ * @assertion: Operator x <= y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x <= 1;
+ $ERROR('#1.1: x <= 1 throw ReferenceError. Actual: ' + (x <= 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x <= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T3.js
new file mode 100644
index 000000000..fbb266ec1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A2.1_T3;
+ * @section: 11.8.3, 11.8.5;
+ * @assertion: Operator x <= y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 <= y;
+ $ERROR('#1.1: 1 <= y throw ReferenceError. Actual: ' + (1 <= y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 <= y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.2_T1.js
new file mode 100644
index 000000000..dc85f4908
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A2.2_T1;
+ * @section: 11.8.3, 8.6.2.6;
+ * @assertion: Operator x <= y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return 0}} <= 1 !== true) {
+ $ERROR('#1: {valueOf: function() {return 1}} <= 1 === true. Actual: ' + ({valueOf: function() {return 1}} <= 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 0}, toString: function() {return 2}} <= 1 !== true) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 0}} <= 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 0}} <= 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 0}, toString: function() {return {}}} <= 1 !== true) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} <= 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} <= 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 0}, toString: function() {throw "error"}} <= 1 !== true) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} <= 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} <= 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 0}, toString: function() {throw "error"}} <= 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 0}, toString: function() {throw "error"}} <= 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 <= {toString: function() {return 2}} !== true) {
+ $ERROR('#5: 1 <= {toString: function() {return 2}} === true. Actual: ' + (1 <= {toString: function() {return 2}}));
+}
+
+//CHECK#6
+if (1 <= {valueOf: function() {return {}}, toString: function() {return 2}} !== true) {
+ $ERROR('#6: 1 <= {valueOf: function() {return {}}, toString: function() {return 2}} === true. Actual: ' + (1 <= {valueOf: function() {return {}}, toString: function() {return 2}}));
+}
+
+//CHECK#7
+try {
+ 1 <= {valueOf: function() {throw "error"}, toString: function() {return 2}};
+ $ERROR('#7.1: 1 <= {valueOf: function() {throw "error"}, toString: function() {return 2}} throw "error". Actual: ' + (1 <= {valueOf: function() {throw "error"}, toString: function() {return 2}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 <= {valueOf: function() {throw "error"}, toString: function() {return 2}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 <= {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 <= {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 <= {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 <= {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.3_T1.js
new file mode 100644
index 000000000..9658773e3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A2.3_T1;
+ * @section: 11.8.3;
+ * @assertion: ToNumber(second expression) is called first, and then ToNumber(first expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x <= y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x <= y throw "y". Actual: ' + (x <= y));
+} catch (e) {
+ if (e === "x") {
+ $ERROR('#1.2: ToNumber(second expression) is called first, and then ToNumber(first expression)');
+ } else {
+ if (e !== "y") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x <= y throw "y". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T1.js
new file mode 100644
index 000000000..4d767dc02
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A2.4_T1;
+ * @section: 11.8.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) <= x !== true) {
+ $ERROR('#1: var x = 0; (x = 1) <= x === true');
+}
+
+//CHECK#2
+var x = 1;
+if (x <= (x = 0) !== false) {
+ $ERROR('#2: var x = 1; x <= (x = 0) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T2.js
new file mode 100644
index 000000000..7c1890301
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A2.4_T2;
+ * @section: 11.8.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() <= y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() <= y() throw "x". Actual: ' + (x() <= y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() <= y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T3.js
new file mode 100644
index 000000000..ede9323aa
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A2.4_T3;
+ * @section: 11.8.3;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x <= (x = 1);
+ $ERROR('#1.1: x <= (x = 1) throw ReferenceError. Actual: ' + (x <= (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x <= (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) <= y !== true) {
+ $ERROR('#2: (y = 1) <= y === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.1.js
new file mode 100644
index 000000000..416964ccf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T1.1;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true <= true !== true) {
+ $ERROR('#1: true <= true === true');
+}
+
+//CHECK#2
+if (new Boolean(true) <= true !== true) {
+ $ERROR('#2: new Boolean(true) <= true === true');
+}
+
+//CHECK#3
+if (true <= new Boolean(true) !== true) {
+ $ERROR('#3: true <= new Boolean(true) === true');
+}
+
+//CHECK#4
+if (new Boolean(true) <= new Boolean(true) !== true) {
+ $ERROR('#4: new Boolean(true) <= new Boolean(true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.2.js
new file mode 100644
index 000000000..0df36ffa9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T1.2;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 <= 1 !== true) {
+ $ERROR('#1: 1 <= 1 === true');
+}
+
+//CHECK#2
+if (new Number(1) <= 1 !== true) {
+ $ERROR('#2: new Number(1) <= 1 === true');
+}
+
+//CHECK#3
+if (1 <= new Number(1) !== true) {
+ $ERROR('#3: 1 <= new Number(1) === true');
+}
+
+//CHECK#4
+if (new Number(1) <= new Number(1) !== true) {
+ $ERROR('#4: new Number(1) <= new Number(1) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.3.js
new file mode 100644
index 000000000..01eed6a06
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T1.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T1.3;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (null <= undefined !== false) {
+ $ERROR('#1: null <= undefined === false');
+}
+
+//CHECK#2
+if (undefined <= null !== false) {
+ $ERROR('#2: undefined <= null === false');
+}
+
+//CHECK#3
+if (undefined <= undefined !== false) {
+ $ERROR('#3: undefined <= undefined === false');
+}
+
+//CHECK#4
+if (null <= null !== true) {
+ $ERROR('#4: null <= null === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.1.js
new file mode 100644
index 000000000..00cfb73a9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T2.1;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if (true <= 1 !== true) {
+ $ERROR('#1: true <= 1 === true');
+}
+
+//CHECK#2
+if (1 <= true !== true) {
+ $ERROR('#2: 1 <= true === true');
+}
+
+//CHECK#3
+if (new Boolean(true) <= 1 !== true) {
+ $ERROR('#3: new Boolean(true) <= 1 === true');
+}
+
+//CHECK#4
+if (1 <= new Boolean(true) !== true) {
+ $ERROR('#4: 1 <= new Boolean(true) === true');
+}
+
+//CHECK#5
+if (true <= new Number(1) !== true) {
+ $ERROR('#5: true <= new Number(1) === true');
+}
+
+//CHECK#6
+if (new Number(1) <= true !== true) {
+ $ERROR('#6: new Number(1) <= true === true');
+}
+
+//CHECK#7
+if (new Boolean(true) <= new Number(1) !== true) {
+ $ERROR('#7: new Boolean(true) <= new Number(1) === true');
+}
+
+//CHECK#8
+if (new Number(1) <= new Boolean(true) !== true) {
+ $ERROR('#8: new Number(1) <= new Boolean(true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.2.js
new file mode 100644
index 000000000..c2c55fe99
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T2.2;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" <= 1 !== true) {
+ $ERROR('#1: "1" <= 1 === true');
+}
+
+//CHECK#2
+if (1 <= "1" !== true) {
+ $ERROR('#2: 1 <= "1" === true');
+}
+
+//CHECK#3
+if (new String("1") <= 1 !== true) {
+ $ERROR('#3: new String("1") <= 1 === true');
+}
+
+//CHECK#4
+if (1 <= new String("1") !== true) {
+ $ERROR('#4: 1 <= new String("1") === true');
+}
+
+//CHECK#5
+if ("1" <= new Number(1) !== true) {
+ $ERROR('#5: "1" <= new Number(1) === true');
+}
+
+//CHECK#6
+if (new Number(1) <= "1" !== true) {
+ $ERROR('#6: new Number(1) <= "1" === true');
+}
+
+//CHECK#7
+if (new String("1") <= new Number(1) !== true) {
+ $ERROR('#7: new String("1") <= new Number(1) === true');
+}
+
+//CHECK#8
+if (new Number(1) <= new String("1") !== true) {
+ $ERROR('#8: new Number(1) <= new String("1") === true');
+}
+
+//CHECK#9
+if ("x" <= 1 !== false) {
+ $ERROR('#9: "x" <= 1 === false');
+}
+
+//CHECK#10
+if (1 <= "x" !== false) {
+ $ERROR('#10: 1 <= "x" === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.3.js
new file mode 100644
index 000000000..4cd0b2a2b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T2.3;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 <= null !== false) {
+ $ERROR('#1: 1 <= null === false');
+}
+
+//CHECK#2
+if (null <= 1 !== true) {
+ $ERROR('#2: null <= 1 === true');
+}
+
+//CHECK#3
+if (new Number(1) <= null !== false) {
+ $ERROR('#3: new Number(1) <= null === false');
+}
+
+//CHECK#4
+if (null <= new Number(1) !== true) {
+ $ERROR('#4: null <= new Number(1) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.4.js
new file mode 100644
index 000000000..bbdc03588
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T2.4;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (1 <= undefined !== false) {
+ $ERROR('#1: 1 <= undefined === false');
+}
+
+//CHECK#2
+if (undefined <= 1 !== false) {
+ $ERROR('#2: undefined <= 1 === false');
+}
+
+//CHECK#3
+if (new Number(1) <= undefined !== false) {
+ $ERROR('#3: new Number(1) <= undefined === false');
+}
+
+//CHECK#4
+if (undefined <= new Number(1) !== false) {
+ $ERROR('#4: undefined <= new Number(1) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.5.js
new file mode 100644
index 000000000..1666a6742
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T2.5;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true <= "1" !== true) {
+ $ERROR('#1: true <= "1" === true');
+}
+
+//CHECK#2
+if ("1" <= true !== true) {
+ $ERROR('#2: "1" <= true === true');
+}
+
+//CHECK#3
+if (new Boolean(true) <= "1" !== true) {
+ $ERROR('#3: new Boolean(true) <= "1" === true');
+}
+
+//CHECK#4
+if ("1" <= new Boolean(true) !== true) {
+ $ERROR('#4: "1" <= new Boolean(true) === true');
+}
+
+//CHECK#5
+if (true <= new String("1") !== true) {
+ $ERROR('#5: true <= new String("1") === true');
+}
+
+//CHECK#6
+if (new String("1") <= true !== true) {
+ $ERROR('#6: new String("1") <= true === true');
+}
+
+//CHECK#7
+if (new Boolean(true) <= new String("1") !== true) {
+ $ERROR('#7: new Boolean(true) <= new String("1") === true');
+}
+
+//CHECK#8
+if (new String("1") <= new Boolean(true) !== true) {
+ $ERROR('#8: new String("1") <= new Boolean(true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.6.js
new file mode 100644
index 000000000..d28c3ba53
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T2.6;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ("1" <= undefined !== false) {
+ $ERROR('#1: "1" <= undefined === false');
+}
+
+//CHECK#2
+if (undefined <= "1" !== false) {
+ $ERROR('#2: undefined <= "1" === false');
+}
+
+//CHECK#3
+if (new String("1") <= undefined !== false) {
+ $ERROR('#3: new String("1") <= undefined === false');
+}
+
+//CHECK#4
+if (undefined <= new String("1") !== false) {
+ $ERROR('#4: undefined <= new String("1") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.7.js
new file mode 100644
index 000000000..e6b96451e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T2.7;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" <= null !== false) {
+ $ERROR('#1: "1" <= null === false');
+}
+
+//CHECK#2
+if (null <= "1" !== true) {
+ $ERROR('#2: null <= "1" === true');
+}
+
+//CHECK#3
+if (new String("1") <= null !== false) {
+ $ERROR('#3: new String("1") <= null === false');
+}
+
+//CHECK#4
+if (null <= new String("1") !== true) {
+ $ERROR('#4: null <= new String("1") === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.8.js
new file mode 100644
index 000000000..bdbc28959
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T2.8;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (true <= undefined !== false) {
+ $ERROR('#1: true <= undefined === false');
+}
+
+//CHECK#2
+if (undefined <= true !== false) {
+ $ERROR('#2: undefined <= true === false');
+}
+
+//CHECK#3
+if (new Boolean(true) <= undefined !== false) {
+ $ERROR('#3: new Boolean(true) <= undefined === false');
+}
+
+//CHECK#4
+if (undefined <= new Boolean(true) !== false) {
+ $ERROR('#4: undefined <= new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.9.js
new file mode 100644
index 000000000..8e54c2931
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.1_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.1_T2.9;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToNumber(x) <= ToNumber(y), if Type(Primitive(x)) is not String or Type(Primitive(y)) is not String;
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true <= null !== false) {
+ $ERROR('#1: true <= null === false');
+}
+
+//CHECK#2
+if (null <= true !== true) {
+ $ERROR('#2: null <= true === true');
+}
+
+//CHECK#3
+if (new Boolean(true) <= null !== false) {
+ $ERROR('#3: new Boolean(true) <= null === false');
+}
+
+//CHECK#4
+if (null <= new Boolean(true) !== true) {
+ $ERROR('#4: null <= new Boolean(true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.2_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.2_T1.1.js
new file mode 100644
index 000000000..5125d8d2c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.2_T1.1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.2_T1.1;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToString(x) <= ToString(y), if Type(Primitive(x)) is String and Type(Primitive(y)) is String;
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" <= "1" !== true) {
+ $ERROR('#1: "1" <= "1" === true');
+}
+
+//CHECK#2
+if (new String("1") <= "1" !== true) {
+ $ERROR('#2: new String("1") <= "1" === true');
+}
+
+//CHECK#3
+if ("1" <= new String("1") !== true) {
+ $ERROR('#3: "1" <= new String("1") === true');
+}
+
+//CHECK#4
+if (new String("1") <= new String("1") !== true) {
+ $ERROR('#4: new String("1") <= new String("1") === true');
+}
+
+//CHECK#5
+if ("x" <= "1" !== false) {
+ $ERROR('#5: "x" <= "1" === false');
+}
+
+//CHECK#6
+if ("1" <= "x" !== true) {
+ $ERROR('#6: "1" <= "x" === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.2_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.2_T1.2.js
new file mode 100644
index 000000000..e1691a13b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A3.2_T1.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.3_A3.2_T1.2;
+ * @section: 11.8.3;
+ * @assertion: Operator x <= y returns ToString(x) <= ToString(y), if Type(Primitive(x)) is String and Type(Primitive(y)) is String;
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (({} <= function(){return 1}) !== ({}.toString() <= function(){return 1}.toString())) {
+ $ERROR('#1: ({} <= function(){return 1}) === ({}.toString() <= function(){return 1}.toString())');
+}
+
+//CHECK#2
+if ((function(){return 1} <= {}) !== (function(){return 1}.toString() <= {}.toString())) {
+ $ERROR('#2: (function(){return 1} <= {}) === (function(){return 1}.toString() <= {}.toString())');
+}
+
+//CHECK#3
+if ((function(){return 1} <= function(){return 1}) !== (function(){return 1}.toString() <= function(){return 1}.toString())) {
+ $ERROR('#3: (function(){return 1} <= function(){return 1}) === (function(){return 1}.toString() <= function(){return 1}.toString())');
+}
+
+//CHECK#4
+if (({} <= {}) !== ({}.toString() <= {}.toString())) {
+ $ERROR('#4: ({} <= {}) === ({}.toString() <= {}.toString())');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.1.js
new file mode 100644
index 000000000..4cffbd13b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.1.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.1;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If x is NaN, return false (if result in 11.8.5 is undefined, return false);
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.NaN <= 0) !== false) {
+ $ERROR('#1: (NaN <= 0) === false');
+}
+
+//CHECK#2
+if ((Number.NaN <= 1.1) !== false) {
+ $ERROR('#2: (NaN <= 1.1) === false');
+}
+
+//CHECK#3
+if ((Number.NaN <= -1.1) !== false) {
+ $ERROR('#3: (NaN <= -1.1) === false');
+}
+
+//CHECK#4
+if ((Number.NaN <= Number.NaN) !== false) {
+ $ERROR('#4: (NaN <= NaN) === false');
+}
+
+//CHECK#5
+if ((Number.NaN <= Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#5: (NaN <= +Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.NaN <= Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#6: (NaN <= -Infinity) === false');
+}
+
+//CHECK#7
+if ((Number.NaN <= Number.MAX_VALUE) !== false) {
+ $ERROR('#7: (NaN <= Number.MAX_VALUE) === false');
+}
+
+//CHECK#8
+if ((Number.NaN <= Number.MIN_VALUE) !== false) {
+ $ERROR('#8: (NaN <= Number.MIN_VALUE) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.10.js
new file mode 100644
index 000000000..c00afb1fe
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.10.js
@@ -0,0 +1,41 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.10;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If y is a prefix of x and x !== y, return false;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("x " <= "x") !== false) {
+ $ERROR('#1: ("x " <= "x") === false');
+}
+
+//CHECK#2
+if (("x" <= "") !== false) {
+ $ERROR('#2: ("x" <= "") === false');
+}
+
+//CHECK#3
+if (("abcd" <= "ab") !== false) {
+ $ERROR('#3: ("abcd" <= ab") === false');
+}
+
+//CHECK#4
+if (("abc\u0064" <= "abcd") !== true) {
+ $ERROR('#4: ("abc\\u0064" <= abcd") === true');
+}
+
+//CHECK#5
+if (("x" + "y" <= "x") !== false) {
+ $ERROR('#5: ("x" + "y" <= "x") === false');
+}
+
+//CHECK#6
+var x = "x";
+if ((x + 'y' <= x) !== false) {
+ $ERROR('#6: var x = "x"; (x + "y" <= x) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.11.js
new file mode 100644
index 000000000..0931d3963
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.11.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.11;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If x is a prefix of y, return true;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("x" <= "x") !== true) {
+ $ERROR('#1: ("x" <= "x") === true');
+}
+
+//CHECK#2
+if (("" <= "x") !== true) {
+ $ERROR('#2: ("" <= "x") === true');
+}
+
+//CHECK#3
+if (("ab" <= "abcd") !== true) {
+ $ERROR('#3: ("ab" <= abcd") === true');
+}
+
+//CHECK#4
+if (("abcd" <= "abc\u0064") !== true) {
+ $ERROR('#4: ("abcd" <= abc\\u0064") === true');
+}
+
+//CHECK#5
+if (("x" <= "x" + "y") !== true) {
+ $ERROR('#5: ("x" <= "x" + "y") === true');
+}
+
+//CHECK#6
+var x = "x";
+if ((x <= x + "y") !== true) {
+ $ERROR('#6: var x = "x"; (x <= x + "y") === true');
+}
+
+//CHECK#7
+if (("a\u0000" <= "a\u0000a") !== true) {
+ $ERROR('#7: ("a\\u0000" <= "a\\u0000a") === true');
+}
+
+//CHECK#8
+if (("x" <= " x") !== false) {
+ $ERROR('#8: ("x" <= " x") === false');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.12_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.12_T1.js
new file mode 100644
index 000000000..dbf3f6997
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.12_T1.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.12_T1;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If neither x, nor y is a prefix of each other, returned result of strings comparison applies a simple lexicographic ordering to the sequences of code point value values;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("xx" <= "xy") !== true) {
+ $ERROR('#1: ("xx" <= "xy") === true');
+}
+
+//CHECK#2
+if (("xy" <= "xx") !== false) {
+ $ERROR('#2: ("xy" <= "xx") === false');
+}
+
+//CHECK#3
+if (("x" <= "y") !== true) {
+ $ERROR('#3: ("x" <= y") === true');
+}
+
+//CHECK#4
+if (("aab" <= "aba") !== true) {
+ $ERROR('#4: ("aab" <= aba") === true');
+}
+
+//CHECK#5
+if (("\u0061\u0061\u0061\u0062" <= "\u0061\u0061\u0061\u0061") !== false) {
+ $ERROR('#5: ("\\u0061\\u0061\\u0061\\u0062" <= \\u0061\\u0061\\u0061\\u0061") === false');
+}
+
+//CHECK#6
+if (("a\u0000a" <= "a\u0000b") !== true) {
+ $ERROR('#6: ("a\\u0000a" <= "a\\u0000b") === true');
+}
+
+//CHECK#7
+if (("aB" <= "aa") !== true) {
+ $ERROR('#7: ("aB" <= aa") === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.12_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.12_T2.js
new file mode 100644
index 000000000..af86e980c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.12_T2.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.12_T2;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If neither x, nor y is a prefix of each other, returned result of strings comparison applies a simple lexicographic ordering to the sequences of code point value values;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("0" <= "x") !== true) {
+ $ERROR('#1: ("0" <= "x") !== true');
+}
+
+//CHECK#2
+if (("-" <= "0") !== true) {
+ $ERROR('#2: ("-" <= "0") !== true');
+}
+
+//CHECK#3
+if (("." <= "0") !== true) {
+ $ERROR('#3: ("." <= "0") !== true');
+}
+
+//CHECK#4
+if (("+" <= "-") !== true) {
+ $ERROR('#4: ("+" <= "-") !== true');
+}
+
+//CHECK#5
+if (("-0" <= "-1") !== true) {
+ $ERROR('#5: ("-0" <= "-1") !== true');
+}
+
+//CHECK#6
+if (("+1" <= "-1") !== true) {
+ $ERROR('#6: ("+1" <= "-1") !== true');
+}
+
+//CHECK#7
+if (("1" <= "1e-10") !== true) {
+$ERROR('#7: ("1" <= "1e-10") !== true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.2.js
new file mode 100644
index 000000000..c35d5a8cb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.2.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.2;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If y is NaN, return false (if result in 11.8.5 is undefined, return false);
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 <= Number.NaN) !== false) {
+ $ERROR('#1: (0 <= NaN) === false');
+}
+
+//CHECK#2
+if ((1.1 <= Number.NaN) !== false) {
+ $ERROR('#2: (1.1 <= NaN) === false');
+}
+
+//CHECK#3
+if ((-1.1 <= Number.NaN) !== false) {
+ $ERROR('#3: (-1.1 <= NaN) === false');
+}
+
+//CHECK#4
+if ((Number.NaN <= Number.NaN) !== false) {
+ $ERROR('#4: (NaN <= NaN) === false');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY <= Number.NaN) !== false) {
+ $ERROR('#5: (+Infinity <= NaN) === false');
+}
+
+//CHECK#6
+if ((Number.NEGATIVE_INFINITY <= Number.NaN) !== false) {
+ $ERROR('#6: (-Infinity <= NaN) === false');
+}
+
+//CHECK#7
+if ((Number.MAX_VALUE <= Number.NaN) !== false) {
+ $ERROR('#7: (Number.MAX_VALUE <= NaN) === false');
+}
+
+//CHECK#8
+if ((Number.MIN_VALUE <= Number.NaN) !== false) {
+ $ERROR('#8: (Number.MIN_VALUE <= NaN) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.3.js
new file mode 100644
index 000000000..178b67d18
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.3.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.3;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If x and y are the same number value, return true;
+* @description: x and y are number primitives;
+*/
+
+//CHECK#1
+if ((1 <= 1) !== true) {
+ $ERROR('#1: (1 <= 1) === true');
+}
+
+//CHECK#2
+if ((1.1 <= 1.1) !== true) {
+ $ERROR('#2: (1.1 <= 1.1) === true');
+}
+
+//CHECK#3
+if ((-1.1 <= -1.1) !== true) {
+ $ERROR('#3: (-1.1 <= -1.1) === true');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY <= Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#4: (-Infinity <= -Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY <= Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#5: (+Infinity <= +Infinity) === true');
+}
+
+//CHECK#6
+if ((Number.MAX_VALUE <= Number.MAX_VALUE) !== true) {
+ $ERROR('#6: (Number.MAX_VALUE <= Number.MAX_VALUE) === true');
+}
+
+//CHECK#7
+if ((Number.MIN_VALUE <= Number.MIN_VALUE) !== true) {
+ $ERROR('#7: (Number.MIN_VALUE <= Number.MIN_VALUE) === true');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.4.js
new file mode 100644
index 000000000..05a810ccd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.4.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.4;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If either x or y is +0 and the other is -0, return true;
+* @description: Checking all combinations;
+*/
+
+//CHECK#1
+if ((0 <= 0) !== true) {
+ $ERROR('#1: (0 <= 0) === true');
+}
+
+//CHECK#2
+if ((-0 <= -0) !== true) {
+ $ERROR('#2: (-0 <= -0) === true');
+}
+
+//CHECK#3
+if ((+0 <= -0) !== true) {
+ $ERROR('#3: (+0 <= -0) === true');
+}
+
+//CHECK#4
+if ((-0 <= +0) !== true) {
+ $ERROR('#4: (-0 <= +0) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.5.js
new file mode 100644
index 000000000..edf1b850e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.5.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.5;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If x is +Infinity and x !== y, return false;
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.POSITIVE_INFINITY <= 0) !== false) {
+ $ERROR('#1: (+Infinity <= 0) === false');
+}
+
+//CHECK#2
+if ((Number.POSITIVE_INFINITY <= 1.1) !== false) {
+ $ERROR('#2: (+Infinity <= 1.1) === false');
+}
+
+//CHECK#3
+if ((Number.POSITIVE_INFINITY <= -1.1) !== false) {
+ $ERROR('#3: (+Infinity <= -1.1) === false');
+}
+
+//CHECK#4
+if ((Number.POSITIVE_INFINITY <= Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#4: (+Infinity <= -Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY <= Number.MAX_VALUE) !== false) {
+ $ERROR('#5: (+Infinity <= Number.MAX_VALUE) === false');
+}
+
+//CHECK#6
+if ((Number.POSITIVE_INFINITY <= Number.MIN_VALUE) !== false) {
+ $ERROR('#6: (+Infinity <= Number.MIN_VALUE) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.6.js
new file mode 100644
index 000000000..bfa210542
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.6.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.6;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If y is +Infinity and x !== y, return true;
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 <= Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#1: (0 <= +Infinity) === true');
+}
+
+//CHECK#2
+if ((1.1 <= Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#2: (1.1 <= +Infinity) === true');
+}
+
+//CHECK#3
+if ((-1.1 <= Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#3: (-1.1 <= +Infinity) === true');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY <= Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#4: (-Infinity <= +Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.MAX_VALUE <= Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#5: (Number.MAX_VALUE <= +Infinity) === true');
+}
+
+//CHECK#6
+if ((Number.MIN_VALUE <= Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#6: (Number.MIN_VALUE <= +Infinity) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.7.js
new file mode 100644
index 000000000..dd05f8dd2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.7.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.7;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If x is -Infinity, return true;
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.NEGATIVE_INFINITY <= 0) !== true) {
+ $ERROR('#1: (-Infinity <= 0) === true');
+}
+
+//CHECK#2
+if ((Number.NEGATIVE_INFINITY <= 1.1) !== true) {
+ $ERROR('#2: (-Infinity <= 1.1) === true');
+}
+
+//CHECK#3
+if ((Number.NEGATIVE_INFINITY <= -1.1) !== true) {
+ $ERROR('#3: (-Infinity <= -1.1) === true');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY <= Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#4: (-Infinity <= +Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.NEGATIVE_INFINITY <= Number.MAX_VALUE) !== true) {
+ $ERROR('#5: (-Infinity <= Number.MAX_VALUE) === true');
+}
+
+//CHECK#6
+if ((Number.NEGATIVE_INFINITY <= Number.MIN_VALUE) !== true) {
+ $ERROR('#6: (-Infinity <= Number.MIN_VALUE) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.8.js
new file mode 100644
index 000000000..074b872f7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.8;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If y is -Infinity and x !== y, return false;
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 <= Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#1: (0 <= -Infinity) === false');
+}
+
+//CHECK#2
+if ((1.1 <= Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#2: (1.1 <= -Infinity) === false');
+}
+
+//CHECK#3
+if ((-1.1 <= Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#3: (-1.1 <= -Infinity) === false');
+}
+
+//CHECK#4
+if ((Number.POSITIVE_INFINITY <= Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#4: (+Infinity <= -Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.MAX_VALUE <= Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#5: (Number.MAX_VALUE <= -Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.MIN_VALUE <= Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#6: (Number.MIN_VALUE <= -Infinity) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.9.js
new file mode 100644
index 000000000..b87947fd4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.3_The_Less_than_or_equal_Operator/S11.8.3_A4.9.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.3_A4.9;
+* @section: 11.8.3, 11.8.5;
+* @assertion: If x is less or equal than y and these values are both finite non-zero, return true; otherwise, return false;
+* @description: x and y are number primitives;
+*/
+
+//CHECK#1
+if ((1.1 <= 1) !== false) {
+ $ERROR('#1: (1.1 <= 1) === false');
+}
+
+//CHECK#2
+if ((1 <= 1.1) !== true) {
+ $ERROR('#2: (1 <= 1.1) === true');
+}
+
+//CHECK#3
+if ((-1.1 <= -1) !== true) {
+ $ERROR('#3: (-1.1 <= -1) === true');
+}
+
+//CHECK#4
+if ((-1 <= -1.1) !== false) {
+ $ERROR('#4: (-1 <= -1.1) === false');
+}
+
+//CHECK#5
+if ((0 <= 0.1) !== true) {
+ $ERROR('#5: (0 <= 0.1) === true');
+}
+
+//CHECK#6
+if ((-0.1 <= 0) !== true) {
+ $ERROR('#6: (-0.1 <= 0) === true');
+}
+
+//CHECK#7
+if ((Number.MAX_VALUE/2 <= Number.MAX_VALUE) !== true) {
+ $ERROR('#7: (Number.MAX_VALUE/2 <= Number.MAX_VALUE) === true');
+}
+
+//CHECK#8
+if ((Number.MIN_VALUE <= Number.MIN_VALUE*2) !== true) {
+ $ERROR('#8: (Number.MIN_VALUE <= Number.MIN_VALUE*2) === true');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A1.js
new file mode 100644
index 000000000..9403e0073
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A1;
+* @section: 11.8.4, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between RelationalExpression and "=>" or "=>" and ShiftExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("1\u0009>=\u00091") !== true) {
+ $ERROR('#1: (1\\u0009>=\\u00091) === true');
+}
+
+//CHECK#2
+if (eval("1\u000B>=\u000B1") !== true) {
+ $ERROR('#2: (1\\u000B>=\\u000B1) === true');
+}
+
+//CHECK#3
+if (eval("1\u000C>=\u000C1") !== true) {
+ $ERROR('#3: (1\\u000C>=\\u000C1) === true');
+}
+
+//CHECK#4
+if (eval("1\u0020>=\u00201") !== true) {
+ $ERROR('#4: (1\\u0020>=\\u00201) === true');
+}
+
+//CHECK#5
+if (eval("1\u00A0>=\u00A01") !== true) {
+ $ERROR('#5: (1\\u00A0>=\\u00A01) === true');
+}
+
+//CHECK#6
+if (eval("1\u000A>=\u000A1") !== true) {
+ $ERROR('#6: (1\\u000A>=\\u000A1) === true');
+}
+
+//CHECK#7
+if (eval("1\u000D>=\u000D1") !== true) {
+ $ERROR('#7: (1\\u000D>=\\u000D1) === true');
+}
+
+//CHECK#8
+if (eval("1\u2028>=\u20281") !== true) {
+ $ERROR('#8: (1\\u2028>=\\u20281) === true');
+}
+
+//CHECK#9
+if (eval("1\u2029>=\u20291") !== true) {
+ $ERROR('#9: (1\\u2029>=\\u20291) === true');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029>=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== true) {
+ $ERROR('#10: (1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029>=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T1.js
new file mode 100644
index 000000000..9451db9e1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A2.1_T1;
+* @section: 11.8.4, 11.8.5;
+* @assertion: Operator x >= y uses GetValue;
+* @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (1 >= 1 !== true) {
+ $ERROR('#1: 1 >= 1 === true');
+}
+
+//CHECK#2
+var x = 1;
+if (x >= 1 !== true) {
+ $ERROR('#2: var x = 1; x >= 1 === true');
+}
+
+//CHECK#3
+var y = 1;
+if (1 >= y !== true) {
+ $ERROR('#3: var y = 1; 1 >= y === true');
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if (x >= y !== true) {
+ $ERROR('#4: var x = 1; var y = 1; x >= y === true');
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if (objectx.prop >= objecty.prop !== true) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; objectx.prop >= objecty.prop === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T2.js
new file mode 100644
index 000000000..fbd86a0d4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A2.1_T2;
+ * @section: 11.8.4, 11.8.5;
+ * @assertion: Operator x >= y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x >= 1;
+ $ERROR('#1.1: x >= 1 throw ReferenceError. Actual: ' + (x >= 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x >= 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T3.js
new file mode 100644
index 000000000..1be8779f0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A2.1_T3;
+ * @section: 11.8.4, 11.8.5;
+ * @assertion: Operator x >= y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 >= y;
+ $ERROR('#1.1: 1 >= y throw ReferenceError. Actual: ' + (1 >= y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 >= y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.2_T1.js
new file mode 100644
index 000000000..762957595
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.2_T1.js
@@ -0,0 +1,70 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A2.2_T1;
+ * @section: 11.8.4, 8.6.2.6;
+ * @assertion: Operator x >= y uses [[Default Value]];
+ * @description: If Type(value) is Object, evaluate ToPrimitive(value, Number);
+ */
+
+//CHECK#1
+if ({valueOf: function() {return 2}} >= 1 !== true) {
+ $ERROR('#1: {valueOf: function() {return 1}} >= 1 === true. Actual: ' + ({valueOf: function() {return 1}} >= 1));
+}
+
+//CHECK#2
+if ({valueOf: function() {return 2}, toString: function() {return 0}} >= 1 !== true) {
+ $ERROR('#2: {valueOf: function() {return 1}, toString: function() {return 2}} >= 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return 2}} >= 1));
+}
+
+//CHECK#3
+if ({valueOf: function() {return 2}, toString: function() {return {}}} >= 1 !== true) {
+ $ERROR('#3: {valueOf: function() {return 1}, toString: function() {return {}}} >= 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {return {}}} >= 1));
+}
+
+//CHECK#4
+try {
+ if ({valueOf: function() {return 2}, toString: function() {throw "error"}} >= 1 !== true) {
+ $ERROR('#4.1: {valueOf: function() {return 1}, toString: function() {throw "error"}} >= 1 === true. Actual: ' + ({valueOf: function() {return 1}, toString: function() {throw "error"}} >= 1));
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: {valueOf: function() {return 2}, toString: function() {throw "error"}} >= 1 not throw "error"');
+ } else {
+ $ERROR('#4.3: {valueOf: function() {return 2}, toString: function() {throw "error"}} >= 1 not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (1 >= {toString: function() {return 0}} !== true) {
+ $ERROR('#5: 1 >= {toString: function() {return 0}} === true. Actual: ' + (1 >= {toString: function() {return 0}}));
+}
+
+//CHECK#6
+if (1 >= {valueOf: function() {return {}}, toString: function() {return 0}} !== true) {
+ $ERROR('#6: 1 >= {valueOf: function() {return {}}, toString: function() {return 0}} === true. Actual: ' + (1 >= {valueOf: function() {return {}}, toString: function() {return 0}}));
+}
+
+//CHECK#7
+try {
+ 1 >= {valueOf: function() {throw "error"}, toString: function() {return 0}};
+ $ERROR('#7.1: 1 >= {valueOf: function() {throw "error"}, toString: function() {return 0}} throw "error". Actual: ' + (1 >= {valueOf: function() {throw "error"}, toString: function() {return 0}}));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: 1 >= {valueOf: function() {throw "error"}, toString: function() {return 0}} throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ 1 >= {valueOf: function() {return {}}, toString: function() {return {}}};
+ $ERROR('#8.1: 1 >= {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (1 >= {valueOf: function() {return {}}, toString: function() {return {}}}));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: 1 >= {valueOf: function() {return {}}, toString: function() {return {}}} throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.3_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.3_T1.js
new file mode 100644
index 000000000..a3ee44f9b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.3_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A2.3_T1;
+ * @section: 11.8.4;
+ * @assertion: ToNumber(first expression) is called first, and then ToNumber(second expression);
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = { valueOf: function () { throw "x"; } };
+var y = { valueOf: function () { throw "y"; } };
+try {
+ x >= y;
+ $ERROR('#1.1: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x >= y throw "x". Actual: ' + (x >= y));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: ToNumber(first expression) is called first, and then ToNumber(second expression)');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = { valueOf: function () { throw "x"; } }; var y = { valueOf: function () { throw "y"; } }; x >= y throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T1.js
new file mode 100644
index 000000000..b0e9c1cc9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A2.4_T1;
+ * @section: 11.8.4;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 1;
+if ((x = 0) >= x !== true) {
+ $ERROR('#1: var x = 1; (x = 0) >= x === true');
+}
+
+//CHECK#2
+var x = 0;
+if (x >= (x = 1) !== false) {
+ $ERROR('#2: var x = 0; x >= (x = 1) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T2.js
new file mode 100644
index 000000000..11250f560
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A2.4_T2;
+ * @section: 11.8.4;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() >= y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() >= y() throw "x". Actual: ' + (x() >= y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() >= y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T3.js
new file mode 100644
index 000000000..57016dfb1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A2.4_T3;
+ * @section: 11.8.4;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x >= (x = 1);
+ $ERROR('#1.1: x >= (x = 1) throw ReferenceError. Actual: ' + (x >= (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x >= (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) >= y !== true) {
+ $ERROR('#2: (y = 1) >= y === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.1.js
new file mode 100644
index 000000000..30bff4796
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T1.1;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive boolean and Boolean object;
+ */
+
+//CHECK#1
+if (true >= true !== true) {
+ $ERROR('#1: true >= true === true');
+}
+
+//CHECK#2
+if (new Boolean(true) >= true !== true) {
+ $ERROR('#2: new Boolean(true) >= true === true');
+}
+
+//CHECK#3
+if (true >= new Boolean(true) !== true) {
+ $ERROR('#3: true >= new Boolean(true) === true');
+}
+
+//CHECK#4
+if (new Boolean(true) >= new Boolean(true) !== true) {
+ $ERROR('#4: new Boolean(true) >= new Boolean(true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.2.js
new file mode 100644
index 000000000..77e44b155
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.2.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T1.2;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive number and Number object;
+*/
+
+//CHECK#1
+if (1 >= 1 !== true) {
+ $ERROR('#1: 1 >= 1 === true');
+}
+
+//CHECK#2
+if (new Number(1) >= 1 !== true) {
+ $ERROR('#2: new Number(1) >= 1 === true');
+}
+
+//CHECK#3
+if (1 >= new Number(1) !== true) {
+ $ERROR('#3: 1 >= new Number(1) === true');
+}
+
+//CHECK#4
+if (new Number(1) >= new Number(1) !== true) {
+ $ERROR('#4: new Number(1) >= new Number(1) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.3.js
new file mode 100644
index 000000000..f3977baf1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T1.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T1.3;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between Null and Undefined;
+ */
+
+//CHECK#1
+if (null >= undefined !== false) {
+ $ERROR('#1: null >= undefined === false');
+}
+
+//CHECK#2
+if (undefined >= null !== false) {
+ $ERROR('#2: undefined >= null === false');
+}
+
+//CHECK#3
+if (undefined >= undefined !== false) {
+ $ERROR('#3: undefined >= undefined === false');
+}
+
+//CHECK#4
+if (null >= null !== true) {
+ $ERROR('#4: null >= null === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.1.js
new file mode 100644
index 000000000..4e8f97587
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T2.1;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Boolean (primitive and object);
+ */
+
+//CHECK#1
+if (true >= 1 !== true) {
+ $ERROR('#1: true >= 1 === true');
+}
+
+//CHECK#2
+if (1 >= true !== true) {
+ $ERROR('#2: 1 >= true === true');
+}
+
+//CHECK#3
+if (new Boolean(true) >= 1 !== true) {
+ $ERROR('#3: new Boolean(true) >= 1 === true');
+}
+
+//CHECK#4
+if (1 >= new Boolean(true) !== true) {
+ $ERROR('#4: 1 >= new Boolean(true) === true');
+}
+
+//CHECK#5
+if (true >= new Number(1) !== true) {
+ $ERROR('#5: true >= new Number(1) === true');
+}
+
+//CHECK#6
+if (new Number(1) >= true !== true) {
+ $ERROR('#6: new Number(1) >= true === true');
+}
+
+//CHECK#7
+if (new Boolean(true) >= new Number(1) !== true) {
+ $ERROR('#7: new Boolean(true) >= new Number(1) === true');
+}
+
+//CHECK#8
+if (new Number(1) >= new Boolean(true) !== true) {
+ $ERROR('#8: new Number(1) >= new Boolean(true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.2.js
new file mode 100644
index 000000000..d93a54e8b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.2.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T2.2;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and String (primitive and object);
+*/
+
+//CHECK#1
+if ("1" >= 1 !== true) {
+ $ERROR('#1: "1" >= 1 === true');
+}
+
+//CHECK#2
+if (1 >= "1" !== true) {
+ $ERROR('#2: 1 >= "1" === true');
+}
+
+//CHECK#3
+if (new String("1") >= 1 !== true) {
+ $ERROR('#3: new String("1") >= 1 === true');
+}
+
+//CHECK#4
+if (1 >= new String("1") !== true) {
+ $ERROR('#4: 1 >= new String("1") === true');
+}
+
+//CHECK#5
+if ("1" >= new Number(1) !== true) {
+ $ERROR('#5: "1" >= new Number(1) === true');
+}
+
+//CHECK#6
+if (new Number(1) >= "1" !== true) {
+ $ERROR('#6: new Number(1) >= "1" === true');
+}
+
+//CHECK#7
+if (new String("1") >= new Number(1) !== true) {
+ $ERROR('#7: new String("1") >= new Number(1) === true');
+}
+
+//CHECK#8
+if (new Number(1) >= new String("1") !== true) {
+ $ERROR('#8: new Number(1) >= new String("1") === true');
+}
+
+//CHECK#9
+if ("x" >= 1 !== false) {
+ $ERROR('#9: "x" >= 1 === false');
+}
+
+//CHECK#10
+if (1 >= "x" !== false) {
+ $ERROR('#10: 1 >= "x" === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.3.js
new file mode 100644
index 000000000..3975f680f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.3.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T2.3;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (1 >= null !== true) {
+ $ERROR('#1: 1 >= null === true');
+}
+
+//CHECK#2
+if (null >= 1 !== false) {
+ $ERROR('#2: null >= 1 === false');
+}
+
+//CHECK#3
+if (new Number(1) >= null !== true) {
+ $ERROR('#3: new Number(1) >= null === true');
+}
+
+//CHECK#4
+if (null >= new Number(1) !== false) {
+ $ERROR('#4: null >= new Number(1) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.4.js
new file mode 100644
index 000000000..b860593ce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.4.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T2.4;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Number (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (1 >= undefined !== false) {
+ $ERROR('#1: 1 >= undefined === false');
+}
+
+//CHECK#2
+if (undefined >= 1 !== false) {
+ $ERROR('#2: undefined >= 1 === false');
+}
+
+//CHECK#3
+if (new Number(1) >= undefined !== false) {
+ $ERROR('#3: new Number(1) >= undefined === false');
+}
+
+//CHECK#4
+if (undefined >= new Number(1) !== false) {
+ $ERROR('#4: undefined >= new Number(1) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.5.js
new file mode 100644
index 000000000..10de8929c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.5.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T2.5;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Boolean (primitive and object);
+*/
+
+//CHECK#1
+if (true >= "1" !== true) {
+ $ERROR('#1: true >= "1" === true');
+}
+
+//CHECK#2
+if ("1" >= true !== true) {
+ $ERROR('#2: "1" >= true === true');
+}
+
+//CHECK#3
+if (new Boolean(true) >= "1" !== true) {
+ $ERROR('#3: new Boolean(true) >= "1" === true');
+}
+
+//CHECK#4
+if ("1" >= new Boolean(true) !== true) {
+ $ERROR('#4: "1" >= new Boolean(true) === true');
+}
+
+//CHECK#5
+if (true >= new String("1") !== true) {
+ $ERROR('#5: true >= new String("1") === true');
+}
+
+//CHECK#6
+if (new String("1") >= true !== true) {
+ $ERROR('#6: new String("1") >= true === true');
+}
+
+//CHECK#7
+if (new Boolean(true) >= new String("1") !== true) {
+ $ERROR('#7: new Boolean(true) >= new String("1") === true');
+}
+
+//CHECK#8
+if (new String("1") >= new Boolean(true) !== true) {
+ $ERROR('#8: new String("1") >= new Boolean(true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.6.js
new file mode 100644
index 000000000..d1633e1eb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.6.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T2.6;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if ("1" >= undefined !== false) {
+ $ERROR('#1: "1" >= undefined === false');
+}
+
+//CHECK#2
+if (undefined >= "1" !== false) {
+ $ERROR('#2: undefined >= "1" === false');
+}
+
+//CHECK#3
+if (new String("1") >= undefined !== false) {
+ $ERROR('#3: new String("1") >= undefined === false');
+}
+
+//CHECK#4
+if (undefined >= new String("1") !== false) {
+ $ERROR('#4: undefined >= new String("1") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.7.js
new file mode 100644
index 000000000..a4ef97ee0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.7.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T2.7;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between String (primitive or object) and Null;
+ */
+
+//CHECK#1
+if ("1" >= null !== true) {
+ $ERROR('#1: "1" >= null === true');
+}
+
+//CHECK#2
+if (null >= "1" !== false) {
+ $ERROR('#2: null >= "1" === false');
+}
+
+//CHECK#3
+if (new String("1") >= null !== true) {
+ $ERROR('#3: new String("1") >= null === true');
+}
+
+//CHECK#4
+if (null >= new String("1") !== false) {
+ $ERROR('#4: null >= new String("1") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.8.js
new file mode 100644
index 000000000..eee04b22e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.8.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T2.8;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Undefined;
+ */
+
+//CHECK#1
+if (true >= undefined !== false) {
+ $ERROR('#1: true >= undefined === false');
+}
+
+//CHECK#2
+if (undefined >= true !== false) {
+ $ERROR('#2: undefined >= true === false');
+}
+
+//CHECK#3
+if (new Boolean(true) >= undefined !== false) {
+ $ERROR('#3: new Boolean(true) >= undefined === false');
+}
+
+//CHECK#4
+if (undefined >= new Boolean(true) !== false) {
+ $ERROR('#4: undefined >= new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.9.js
new file mode 100644
index 000000000..041ab7b00
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.1_T2.9.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.1_T2.9;
+ * @section: 11.8.4;
+ * @assertion: If Type(Primitive(x)) is not String or Type(Primitive(y)) is not String, then operator x >= y returns ToNumber(x) >= ToNumber(y);
+ * @description: Type(Primitive(x)) is different from Type(Primitive(y)) and both types vary between Boolean (primitive or object) and Null;
+ */
+
+//CHECK#1
+if (true >= null !== true) {
+ $ERROR('#1: true >= null === true');
+}
+
+//CHECK#2
+if (null >= true !== false) {
+ $ERROR('#2: null >= true === false');
+}
+
+//CHECK#3
+if (new Boolean(true) >= null !== true) {
+ $ERROR('#3: new Boolean(true) >= null === true');
+}
+
+//CHECK#4
+if (null >= new Boolean(true) !== false) {
+ $ERROR('#4: null >= new Boolean(true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.2_T1.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.2_T1.1.js
new file mode 100644
index 000000000..8dad32cf8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.2_T1.1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.2_T1.1;
+ * @section: 11.8.4;
+ * @assertion: Operator x >= y returns ToString(x) >= ToString(y), if Type(Primitive(x)) is String and Type(Primitive(y)) is String;
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between primitive string and String object;
+*/
+
+//CHECK#1
+if ("1" >= "1" !== true) {
+ $ERROR('#1: "1" >= "1" === true');
+}
+
+//CHECK#2
+if (new String("1") >= "1" !== true) {
+ $ERROR('#2: new String("1") >= "1" === true');
+}
+
+//CHECK#3
+if ("1" >= new String("1") !== true) {
+ $ERROR('#3: "1" >= new String("1") === true');
+}
+
+//CHECK#4
+if (new String("1") >= new String("1") !== true) {
+ $ERROR('#4: new String("1") >= new String("1") === true');
+}
+
+//CHECK#5
+if ("x" >= "1" !== true) {
+ $ERROR('#5: "x" >= "1" === true');
+}
+
+//CHECK#6
+if ("1" >= "x" !== false) {
+ $ERROR('#6: "1" >= "x" === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.2_T1.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.2_T1.2.js
new file mode 100644
index 000000000..9b5503612
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A3.2_T1.2.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.4_A3.2_T1.2;
+ * @section: 11.8.4;
+ * @assertion: Operator x >= y returns ToString(x) >= ToString(y), if Type(Primitive(x)) is String and Type(Primitive(y)) is String;
+ * @description: Type(Primitive(x)) and Type(Primitive(y)) vary between Object object and Function object;
+ */
+
+//CHECK#1
+if (({} >= function(){return 1}) !== ({}.toString() >= function(){return 1}.toString())) {
+ $ERROR('#1: ({} >= function(){return 1}) === ({}.toString() >= function(){return 1}.toString())');
+}
+
+//CHECK#2
+if ((function(){return 1} >= {}) !== (function(){return 1}.toString() >= {}.toString())) {
+ $ERROR('#2: (function(){return 1} >= {}) === (function(){return 1}.toString() >= {}.toString())');
+}
+
+//CHECK#3
+if ((function(){return 1} >= function(){return 1}) !== (function(){return 1}.toString() >= function(){return 1}.toString())) {
+ $ERROR('#3: (function(){return 1} >= function(){return 1}) === (function(){return 1}.toString() >= function(){return 1}.toString())');
+}
+
+//CHECK#4
+if (({} >= {}) !== ({}.toString() >= {}.toString())) {
+ $ERROR('#4: ({} >= {}) === ({}.toString() >= {}.toString())');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.1.js
new file mode 100644
index 000000000..8cae53768
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.1.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.1;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If x is NaN, return false (if result in 11.8.5 is undefined, return false);
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.NaN >= 0) !== false) {
+ $ERROR('#1: (NaN >= 0) === false');
+}
+
+//CHECK#2
+if ((Number.NaN >= 1.1) !== false) {
+ $ERROR('#2: (NaN >= 1.1) === false');
+}
+
+//CHECK#3
+if ((Number.NaN >= -1.1) !== false) {
+ $ERROR('#3: (NaN >= -1.1) === false');
+}
+
+//CHECK#4
+if ((Number.NaN >= Number.NaN) !== false) {
+ $ERROR('#4: (NaN >= NaN) === false');
+}
+
+//CHECK#5
+if ((Number.NaN >= Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#5: (NaN >= +Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.NaN >= Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#6: (NaN >= -Infinity) === false');
+}
+
+//CHECK#7
+if ((Number.NaN >= Number.MAX_VALUE) !== false) {
+ $ERROR('#7: (NaN >= Number.MAX_VALUE) === false');
+}
+
+//CHECK#8
+if ((Number.NaN >= Number.MIN_VALUE) !== false) {
+ $ERROR('#8: (NaN >= Number.MIN_VALUE) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.10.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.10.js
new file mode 100644
index 000000000..e754ddece
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.10.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.10;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If x is a prefix of y and x !== y, return false;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("x" >= "x ") !== false) {
+ $ERROR('#1: ("x" >= "x ") === false');
+}
+
+//CHECK#2
+if (("" >= "x") !== false) {
+ $ERROR('#2: ("" >= "x") === false');
+}
+
+//CHECK#3
+if (("ab" >= "abcd") !== false) {
+ $ERROR('#3: ("ab" >= abcd") === false');
+}
+
+//CHECK#4
+if (("abcd" >= "abc\u0064") !== true) {
+ $ERROR('#4: ("abcd" >= abc\\u0064") === true');
+}
+
+//CHECK#5
+if (("x" >= "x" + "y") !== false) {
+ $ERROR('#5: ("x" >= "x" + "y") === false');
+}
+
+//CHECK#6
+var x = "x";
+if ((x >= x + "y") !== false) {
+ $ERROR('#6: var x = "x"; (x >= x + "y") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.11.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.11.js
new file mode 100644
index 000000000..fa80b90eb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.11.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.11;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If y is a prefix of x, return true;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("x" >= "x") !== true) {
+ $ERROR('#1: ("x" >= "x") === true');
+}
+
+//CHECK#2
+if (("x" >= "") !== true) {
+ $ERROR('#2: ("x" >= "") === true');
+}
+
+//CHECK#3
+if (("abcd" >= "ab") !== true) {
+ $ERROR('#3: ("abcd" >= ab") === true');
+}
+
+//CHECK#4
+if (("abc\u0064" >= "abcd") !== true) {
+ $ERROR('#4: ("abc\\u0064" >= abc") === true');
+}
+
+//CHECK#5
+if (("x" + "y" >= "x") !== true) {
+ $ERROR('#5: ("x" + "y" >= "x") === true');
+}
+
+//CHECK#6
+var x = "x";
+if ((x + 'y' >= x) !== true) {
+ $ERROR('#6: var x = "x"; (x + "y" >= x) === true');
+}
+
+//CHECK#7
+if (("a\u0000a" >= "a\u0000") !== true) {
+ $ERROR('#7: ("a\\u0000a" >= "a\\u0000") === true');
+}
+
+//CHECK#8
+if ((" x" >= "x") !== false) {
+ $ERROR('#8: (" x" >= "x") === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.12_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.12_T1.js
new file mode 100644
index 000000000..676adedd2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.12_T1.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.12_T1;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If neither x, nor y is a prefix of each other, returned result of strings comparison applies a simple lexicographic ordering to the sequences of code point value values;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("xy" >= "xx") !== true) {
+ $ERROR('#1: ("xy" >= "xx") === true');
+}
+
+//CHECK#2
+if (("xx" >= "xy") !== false) {
+ $ERROR('#2: ("xx" >= "xy") === false');
+}
+
+//CHECK#3
+if (("y" >= "x") !== true) {
+ $ERROR('#3: ("y" >= "x") === true');
+}
+
+//CHECK#4
+if (("aba" >= "aab") !== true) {
+ $ERROR('#4: ("aba" >= aab") === true');
+}
+
+//CHECK#5
+if (("\u0061\u0061\u0061\u0061" >= "\u0061\u0061\u0061\u0062") !== false) {
+ $ERROR('#5: ("\\u0061\\u0061\\u0061\\u0061" >= \\u0061\\u0061\\u0061\\u0062") === false');
+}
+
+//CHECK#6
+if (("a\u0000b" >= "a\u0000a") !== true) {
+ $ERROR('#6: ("a\\u0000b" >= "a\\u0000a") === true');
+}
+
+//CHECK#7
+if (("aa" >= "aB") !== true) {
+ $ERROR('#7: ("aa" >= aB") === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.12_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.12_T2.js
new file mode 100644
index 000000000..014924451
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.12_T2.js
@@ -0,0 +1,44 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.12_T2;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If neither x, nor y is a prefix of each other, returned result of strings comparison applies a simple lexicographic ordering to the sequences of code point value values;
+* @description: x and y are string primitives;
+*/
+
+//CHECK#1
+if (("x" >= "0") !== true) {
+ $ERROR('#1: ("x" >= "0") !== true');
+}
+
+//CHECK#2
+if (("0" >= "-") !== true) {
+ $ERROR('#2: ("0" >= "-") !== true');
+}
+
+//CHECK#3
+if (("0" >= ".") !== true) {
+ $ERROR('#3: ("0" >= ".") !== true');
+}
+
+//CHECK#4
+if (("-" >= "+") !== true) {
+ $ERROR('#4: ("-" >= "+") !== true');
+}
+
+//CHECK#5
+if (("-1" >= "-0") !== true) {
+ $ERROR('#5: ("-1" >= "-0") !== true');
+}
+
+//CHECK#6
+if (("-1" >= "+1") !== true) {
+ $ERROR('#6: ("-1" >= "+1") !== true');
+}
+
+//CHECK#7
+if (("1e-10" >= "1") !== true) {
+$ERROR('#7: ("1e-10" >= "1") !== true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.2.js
new file mode 100644
index 000000000..0881d92f3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.2.js
@@ -0,0 +1,50 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.2;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If y is NaN, return false (if result in 11.8.5 is undefined, return false);
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 >= Number.NaN) !== false) {
+ $ERROR('#1: (0 >= NaN) === false');
+}
+
+//CHECK#2
+if ((1.1 >= Number.NaN) !== false) {
+ $ERROR('#2: (1.1 >= NaN) === false');
+}
+
+//CHECK#3
+if ((-1.1 >= Number.NaN) !== false) {
+ $ERROR('#3: (-1.1 >= NaN) === false');
+}
+
+//CHECK#4
+if ((Number.NaN >= Number.NaN) !== false) {
+ $ERROR('#4: (NaN >= NaN) === false');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY >= Number.NaN) !== false) {
+ $ERROR('#5: (+Infinity >= NaN) === false');
+}
+
+//CHECK#6
+if ((Number.NEGATIVE_INFINITY >= Number.NaN) !== false) {
+ $ERROR('#6: (-Infinity >= NaN) === false');
+}
+
+//CHECK#7
+if ((Number.MAX_VALUE >= Number.NaN) !== false) {
+ $ERROR('#7: (Number.MAX_VALUE >= NaN) === false');
+}
+
+//CHECK#8
+if ((Number.MIN_VALUE >= Number.NaN) !== false) {
+ $ERROR('#8: (Number.MIN_VALUE >= NaN) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.3.js
new file mode 100644
index 000000000..556c1337c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.3.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.3;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If x and y are the same number value, return true;
+* @description: x and y are number primitives;
+*/
+
+//CHECK#1
+if ((1 >= 1) !== true) {
+ $ERROR('#1: (1 >= 1) === true');
+}
+
+//CHECK#2
+if ((1.1 >= 1.1) !== true) {
+ $ERROR('#2: (1.1 >= 1.1) === true');
+}
+
+//CHECK#3
+if ((-1.1 >= -1.1) !== true) {
+ $ERROR('#3: (-1.1 >= -1.1) === true');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY >= Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#4: (-Infinity >= -Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY >= Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#5: (+Infinity >= +Infinity) === true');
+}
+
+//CHECK#6
+if ((Number.MAX_VALUE >= Number.MAX_VALUE) !== true) {
+ $ERROR('#6: (Number.MAX_VALUE >= Number.MAX_VALUE) === true');
+}
+
+//CHECK#7
+if ((Number.MIN_VALUE >= Number.MIN_VALUE) !== true) {
+ $ERROR('#7: (Number.MIN_VALUE >= Number.MIN_VALUE) === true');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.4.js
new file mode 100644
index 000000000..f5694a6af
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.4.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.4;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If either x or y is +0 and the other is -0, return true;
+* @description: Checking all combinations;
+*/
+
+//CHECK#1
+if ((0 >= 0) !== true) {
+ $ERROR('#1: (0 >= 0) === true');
+}
+
+//CHECK#2
+if ((-0 >= -0) !== true) {
+ $ERROR('#2: (-0 >= -0) === true');
+}
+
+//CHECK#3
+if ((+0 >= -0) !== true) {
+ $ERROR('#3: (+0 >= -0) === true');
+}
+
+//CHECK#4
+if ((-0 >= +0) !== true) {
+ $ERROR('#4: (-0 >= +0) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.5.js
new file mode 100644
index 000000000..1ae107c95
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.5.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.5;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If x is +Infinity, return true;
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.POSITIVE_INFINITY >= 0) !== true) {
+ $ERROR('#1: (+Infinity >= 0) === true');
+}
+
+//CHECK#2
+if ((Number.POSITIVE_INFINITY >= 1.1) !== true) {
+ $ERROR('#2: (+Infinity >= 1.1) === true');
+}
+
+//CHECK#3
+if ((Number.POSITIVE_INFINITY >= -1.1) !== true) {
+ $ERROR('#3: (+Infinity >= -1.1) === true');
+}
+
+//CHECK#4
+if ((Number.POSITIVE_INFINITY >= Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#4: (+Infinity >= -Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.POSITIVE_INFINITY >= Number.MAX_VALUE) !== true) {
+ $ERROR('#5: (+Infinity >= Number.MAX_VALUE) === true');
+}
+
+//CHECK#6
+if ((Number.POSITIVE_INFINITY >= Number.MIN_VALUE) !== true) {
+ $ERROR('#6: (+Infinity >= Number.MIN_VALUE) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.6.js
new file mode 100644
index 000000000..6c0fdcd7a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.6.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.6;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If y is +Infinity and x !== y, return false;
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 >= Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#1: (0 >= +Infinity) === false');
+}
+
+//CHECK#2
+if ((1.1 >= Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#2: (1.1 >= +Infinity) === false');
+}
+
+//CHECK#3
+if ((-1.1 >= Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#3: (-1.1 >= +Infinity) === false');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY >= Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#4: (-Infinity >= +Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.MAX_VALUE >= Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#5: (Number.MAX_VALUE >= +Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.MIN_VALUE >= Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#6: (Number.MIN_VALUE >= +Infinity) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.7.js
new file mode 100644
index 000000000..295a20ce7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.7.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.7;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If x is -Infinity and x !== y, return false;
+* @description: y is number primitive;
+*/
+
+//CHECK#1
+if ((Number.NEGATIVE_INFINITY >= 0) !== false) {
+ $ERROR('#1: (-Infinity >= 0) === false');
+}
+
+//CHECK#2
+if ((Number.NEGATIVE_INFINITY >= 1.1) !== false) {
+ $ERROR('#2: (-Infinity >= 1.1) === false');
+}
+
+//CHECK#3
+if ((Number.NEGATIVE_INFINITY >= -1.1) !== false) {
+ $ERROR('#3: (-Infinity >= -1.1) === false');
+}
+
+//CHECK#4
+if ((Number.NEGATIVE_INFINITY >= Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#4: (-Infinity >= +Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.NEGATIVE_INFINITY >= Number.MAX_VALUE) !== false) {
+ $ERROR('#5: (-Infinity >= Number.MAX_VALUE) === false');
+}
+
+//CHECK#6
+if ((Number.NEGATIVE_INFINITY >= Number.MIN_VALUE) !== false) {
+ $ERROR('#6: (-Infinity >= Number.MIN_VALUE) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.8.js
new file mode 100644
index 000000000..ccf85a8ba
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.8.js
@@ -0,0 +1,40 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.8;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If y is -Infinity, return true;
+* @description: x is number primitive;
+*/
+
+//CHECK#1
+if ((0 >= Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#1: (0 >= -Infinity) === true');
+}
+
+//CHECK#2
+if ((1.1 >= Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#2: (1.1 >= -Infinity) === true');
+}
+
+//CHECK#3
+if ((-1.1 >= Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#3: (-1.1 >= -Infinity) === true');
+}
+
+//CHECK#4
+if ((Number.POSITIVE_INFINITY >= Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#4: (+Infinity >= -Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.MAX_VALUE >= Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#5: (Number.MAX_VALUE >= -Infinity) === true');
+}
+
+//CHECK#6
+if ((Number.MIN_VALUE >= Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#6: (Number.MIN_VALUE >= -Infinity) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.9.js
new file mode 100644
index 000000000..c612324e2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.4_The_Grater_than_or_equal_Operator/S11.8.4_A4.9.js
@@ -0,0 +1,51 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.4_A4.9;
+* @section: 11.8.4, 11.8.5;
+* @assertion: If x is greater or equal than y and these values are both finite non-zero, return true; otherwise, return false;
+* @description: x and y are number primitives;
+*/
+
+//CHECK#1
+if ((1 >= 1.1) !== false) {
+ $ERROR('#1: (1 >= 1.1) === false');
+}
+
+//CHECK#2
+if ((1.1 >= 1) !== true) {
+ $ERROR('#2: (1.1 >= 1) === true');
+}
+
+//CHECK#3
+if ((-1 >= -1.1) !== true) {
+ $ERROR('#3: (-1 >= -1.1) === true');
+}
+
+//CHECK#4
+if ((-1.1 >= -1) !== false) {
+ $ERROR('#4: (-1.1 >= -1) === false');
+}
+
+//CHECK#5
+if ((0.1 >= 0) !== true) {
+ $ERROR('#5: (0.1 >= 0) === true');
+}
+
+//CHECK#6
+if ((0 >= -0.1) !== true) {
+ $ERROR('#6: (0 >= -0.1) === true');
+}
+
+//CHECK#7
+if ((Number.MAX_VALUE >= Number.MAX_VALUE/2) !== true) {
+ $ERROR('#7: (Number.MAX_VALUE >= Number.MAX_VALUE/2) === true');
+}
+
+//CHECK#8
+if ((Number.MIN_VALUE*2 >= Number.MIN_VALUE) !== true) {
+ $ERROR('#8: (Number.MIN_VALUE*2 >= Number.MIN_VALUE) === true');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A1.js
new file mode 100644
index 000000000..bae86c92f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A1;
+* @section: 11.8.6, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between RelationalExpression and "instanceof" and between "instanceof" and ShiftExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("({})\u0009instanceof\u0009Object") !== true) {
+ $ERROR('#1: ({})\\u0009instanceof\\u0009Object === true');
+}
+
+//CHECK#2
+if (eval("({})\u000Binstanceof\u000BObject") !== true) {
+ $ERROR('#2: ({})\\u000Binstanceof\\u000BObject === true');
+}
+
+//CHECK#3
+if (eval("({})\u000Cinstanceof\u000CObject") !== true) {
+ $ERROR('#3: ({})\\u000Cinstanceof\\u000CObject === true');
+}
+
+//CHECK#4
+if (eval("({})\u0020instanceof\u0020Object") !== true) {
+ $ERROR('#4: ({})\\u0020instanceof\\u0020Object === true');
+}
+
+//CHECK#5
+if (eval("({})\u00A0instanceof\u00A0Object") !== true) {
+ $ERROR('#5: ({})\\u00A0instanceof\\u00A0Object === true');
+}
+
+//CHECK#6
+if (eval("({})\u000Ainstanceof\u000AObject") !== true) {
+ $ERROR('#6: ({})\\u000Ainstanceof\\u000AObject === true');
+}
+
+//CHECK#7
+if (eval("({})\u000Dinstanceof\u000DObject") !== true) {
+ $ERROR('#7: ({})\\u000Dinstanceof\\u000DObject === true');
+}
+
+//CHECK#8
+if (eval("({})\u2028instanceof\u2028Object") !== true) {
+ $ERROR('#8: ({})\\u2028instanceof\\u2028Object === true');
+}
+
+//CHECK#9
+if (eval("({})\u2029instanceof\u2029Object") !== true) {
+ $ERROR('#9: ({})\\u2029instanceof\\u2029Object === true');
+}
+
+//CHECK#10
+if (eval("({})\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029instanceof\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029Object") !== true) {
+ $ERROR('#10: ({})\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029instanceof\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029Object === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T1.js
new file mode 100644
index 000000000..7cf637264
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.6_A2.1_T1;
+ * @section: 11.8.6;
+ * @assertion: Operator "instanceof" uses GetValue;
+ * @description: Either Expression is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (({}) instanceof Object !== true) {
+ $ERROR('#1: ({}) instanceof Object === true');
+}
+
+//CHECK#2
+var object = {};
+if (object instanceof Object !== true) {
+ $ERROR('#2: var object = {}; object instanceof Object === true');
+}
+
+//CHECK#3
+var OBJECT = Object;
+if (({}) instanceof OBJECT !== true) {
+ $ERROR('#3: var OBJECT = Object; ({}) instanceof OBJECT === true');
+}
+
+//CHECK#4
+var object = {};
+var OBJECT = Object;
+if (object instanceof OBJECT !== true) {
+ $ERROR('#4: var object = {}; var OBJECT = Object; object instanceof OBJECT === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T2.js
new file mode 100644
index 000000000..74da3f4e4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A2.1_T2;
+* @section: 11.8.6;
+* @assertion: Operator "instanceof" uses GetValue;
+* @description: If GetBase(RelationalExpression) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ object instanceof Object;
+ $ERROR('#1.1: object instanceof Object throw ReferenceError. Actual: ' + (object instanceof Object));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: object instanceof Object throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T3.js
new file mode 100644
index 000000000..87352bc41
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A2.1_T3;
+* @section: 11.8.6;
+* @assertion: Operator "instanceof" uses GetValue;
+* @description: If GetBase(ShiftExpression) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ ({}) instanceof OBJECT;
+ $ERROR('#1.1: ({}) instanceof OBJECT throw ReferenceError. Actual: ' + (({}) instanceof OBJECT));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: ({}) instanceof OBJECT throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T1.js
new file mode 100644
index 000000000..d285ad028
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.6_A2.4_T1;
+ * @section: 11.8.6;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var OBJECT = 0;
+if ((OBJECT = Object, {}) instanceof OBJECT !== true) {
+ $ERROR('#1: var OBJECT = 0; (OBJECT = Object, {}) instanceof OBJECT === true');
+}
+
+//CHECK#2
+var object = {};
+if (object instanceof (object = 0, Object) !== true) {
+ $ERROR('#2: var object = {}; object instanceof (object = 0, Object) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T2.js
new file mode 100644
index 000000000..33292f527
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.6_A2.4_T2;
+ * @section: 11.8.6;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() instanceof y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() instanceof y() throw "x". Actual: ' + (x() instanceof y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() instanceof y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T3.js
new file mode 100644
index 000000000..a30e58164
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.6_A2.4_T3;
+ * @section: 11.8.6;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ object instanceof (object = {}, Object);
+ $ERROR('#1.1: object instanceof (object = {}, Object) throw ReferenceError. Actual: ' + (object instanceof (object = {}, Object)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: object instanceof (object = {}, Object) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((OBJECT = Object, {}) instanceof OBJECT !== true) {
+ $ERROR('#2: (OBJECT = Object, {}) instanceof OBJECT !== true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A3.js
new file mode 100644
index 000000000..e7d2a2107
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A3.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A3;
+* @section: 11.8.6;
+* @assertion: If ShiftExpression is not an object, throw TypeError;
+* @description: Checking all the types of primitives;
+*/
+
+//CHECK#1
+try {
+ true instanceof true;
+ $ERROR('#1: true instanceof true throw TypeError');
+}
+catch (e) {
+ if (e instanceof TypeError !== true) {
+ $ERROR('#1: true instanceof true throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ 1 instanceof 1;
+ $ERROR('#2: 1 instanceof 1 throw TypeError');
+}
+catch (e) {
+ if (e instanceof TypeError !== true) {
+ $ERROR('#2: 1 instanceof 1 throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ "string" instanceof "string";
+ $ERROR('#3: "string" instanceof "string" throw TypeError');
+}
+catch (e) {
+ if (e instanceof TypeError !== true) {
+ $ERROR('#3: "string" instanceof "string" throw TypeError');
+ }
+}
+
+//CHECK#4
+try {
+ undefined instanceof undefined;
+ $ERROR('#4: undefined instanceof undefined throw TypeError');
+}
+catch (e) {
+ if (e instanceof TypeError !== true) {
+ $ERROR('#4: undefined instanceof undefined throw TypeError');
+ }
+}
+
+//CHECK#5
+try {
+ null instanceof null;
+ $ERROR('#5: null instanceof null throw TypeError');
+}
+catch (e) {
+ if (e instanceof TypeError !== true) {
+ $ERROR('#5: null instanceof null throw TypeError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T1.js
new file mode 100644
index 000000000..16d69f904
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T1.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A4_T1;
+* @section: 11.8.6;
+* @assertion: Only constructor call (with "new" keyword) makes instance;
+* @description: Checking Boolean case;
+*/
+
+//CHECK#1
+if (false instanceof Boolean) {
+ $ERROR('#1: false is not instanceof Boolean');
+}
+
+//CHECK#2
+if (Boolean(false) instanceof Boolean) {
+ $ERROR('#2: Boolean(false) is not instanceof Boolean');
+}
+
+//CHECK#3
+if (new Boolean instanceof Boolean !== true) {
+ $ERROR('#3: new Boolean instanceof Boolean');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T2.js
new file mode 100644
index 000000000..cc4f50454
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A4_T2;
+* @section: 11.8.6;
+* @assertion: Only constructor call (with "new" keyword) makes instance;
+* @description: Checking Number case;
+*/
+
+//CHECK#1
+if (0 instanceof Number) {
+ $ERROR('#1: 0 is not instanceof Number');
+}
+
+//CHECK#2
+if (Number(0) instanceof Number) {
+ $ERROR('#2: Number(0) is not instanceof Number');
+}
+
+//CHECK#3
+if (new Number instanceof Number !== true) {
+ $ERROR('#3: new Number instanceof Number');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T3.js
new file mode 100644
index 000000000..035120958
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A4_T3.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A4_T3;
+* @section: 11.8.6;
+* @assertion: Only constructor call (with "new" keyword) makes instance;
+* @description: Checking String case;
+*/
+
+//CHECK#1
+if ("" instanceof String) {
+ $ERROR('#1: "" is not instanceof String');
+}
+
+//CHECK#2
+if (String("") instanceof String) {
+ $ERROR('#2: String("") is not instanceof String');
+}
+
+//CHECK#3
+if (new String instanceof String !== true) {
+ $ERROR('#3: new String instanceof String');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A5_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A5_T1.js
new file mode 100644
index 000000000..4e139a9c7
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A5_T1.js
@@ -0,0 +1,46 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A5_T1;
+* @section: 11.8.6;
+* @assertion: TypeError is subclass of Error from instanceof operator point of view;
+* @description: Checking Error case;
+*/
+
+var __err = new Error;
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#1
+if (!(__err instanceof Error)) {
+ $ERROR('#1: TypeError is subclass of Error from instanceof operator poit of view');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#2
+if (__err instanceof TypeError) {
+ $ERROR('#2: TypeError is subclass of Error from instanceof operator poit of view');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+var err__ = Error('failed');
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#3
+if (!(err__ instanceof Error)) {
+ $ERROR('#3: TypeError is subclass of Error from instanceof operator poit of view');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+//CHECK#4
+if (err__ instanceof TypeError) {
+ $ERROR('#4: TypeError is subclass of Error from instanceof operator poit of view');
+}
+//
+//////////////////////////////////////////////////////////////////////////////
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A5_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A5_T2.js
new file mode 100644
index 000000000..3896a1c01
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A5_T2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A5_T2;
+* @section: 11.8.6;
+* @assertion: TypeError is subclass of Error from instanceof operator point of view;
+* @description: Checking TypeError case;
+*/
+
+var __t__err = new TypeError;
+
+//CHECK#1
+if (!(__t__err instanceof Error)) {
+ $ERROR('#1: TypeError is subclass of Error from instanceof operator poit of view');
+}
+
+//CHECK#2
+if (!(__t__err instanceof TypeError)) {
+ $ERROR('#2: TypeError is subclass of Error from instanceof operator poit of view');
+}
+
+//////////////////////////////////////////////////////////////////////////////
+var err__t__ = TypeError('failed');
+
+//CHECK#3
+if (!(err__t__ instanceof Error)) {
+ $ERROR('#3: TypeError is subclass of Error from instanceof operator poit of view');
+}
+
+//CHECK#4
+if (!(err__t__ instanceof TypeError)) {
+ $ERROR('#4: TypeError is subclass of Error from instanceof operator poit of view');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T1.js
new file mode 100644
index 000000000..330bf01ce
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T1.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A6_T1;
+* @section: 11.8.6;
+* @assertion: Only Function objects implement [[HasInstance]] and can be proper ShiftExpression for the "instanceof" operator consequently
+* @description: Checking "this" case;
+*/
+
+//CHECK#1
+try{
+ ({}) instanceof this;
+ $ERROR('#1: Only Function objects implement [[HasInstance]] and consequently can be proper ShiftExpression for The instanceof operator');
+}
+catch(e){
+ if (e instanceof TypeError !== true) {
+ $ERROR('#1: Only Function objects implement [[HasInstance]] and consequently can be proper ShiftExpression for The instanceof operator');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T2.js
new file mode 100644
index 000000000..9575f673f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A6_T2;
+* @section: 11.8.6;
+* @assertion: Only Function objects implement [[HasInstance]] and can be proper ShiftExpression for the "instanceof" operator consequently;
+* @description: Checking Math case;
+*/
+
+//CHECK#1
+try{
+ 1 instanceof Math;
+ $ERROR('#1: 1 instanceof Math throw TypeError');
+}
+catch(e){
+ if (e instanceof TypeError !== true) {
+ $ERROR('#1: 1 instanceof Math throw TypeError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T3.js
new file mode 100644
index 000000000..40184d2a6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A6_T3;
+* @section: 11.8.6;
+* @assertion: Only Function objects implement [[HasInstance]] and can be proper ShiftExpression for the "instanceof" operator consequently;
+* @description: Checking if RelationalExpression is function;
+*/
+
+function MyFunct(){return 0};
+
+//CHECK#1
+if (MyFunct instanceof MyFunct){
+ $ERROR('#1 function MyFunct(){return 0}; MyFunct instanceof MyFunct === false');
+}
+
+//CHECK#2
+if (MyFunct instanceof Function !== true){
+ $ERROR('#2 function MyFunct(){return 0}; MyFunct instanceof Function === true');
+}
+
+//CHECK#3
+if (MyFunct instanceof Object !== true){
+ $ERROR('#3 function MyFunct(){return 0}; MyFunct instanceof Object === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T4.js
new file mode 100644
index 000000000..be183635b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A6_T4.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A6_T4;
+* @section: 11.8.6;
+* @assertion: Only Function objects implement [[HasInstance]] and can be proper ShiftExpression for the "instanceof" operator consequently;
+* @description: Checking if RelationalExpression is object;
+*/
+
+MyFunct = function(){};
+__my__funct = new MyFunct;
+
+
+//CHECK#1
+if (!(__my__funct instanceof MyFunct)){
+ $ERROR('#1 Only Function objects implement [[HasInstance]] and consequently can be proper ShiftExpression for The instanceof operator');
+}
+
+//CHECK#2
+if (__my__funct instanceof Function){
+ $ERROR('#2 Only Function objects implement [[HasInstance]] and consequently can be proper ShiftExpression for The instanceof operator');
+}
+
+//CHECK#3
+if (!(__my__funct instanceof Object)){
+ $ERROR('#3 Only Function objects implement [[HasInstance]] and consequently can be proper ShiftExpression for The instanceof operator');
+}
+
+//CHECK#4
+try{
+ __my__funct instanceof __my__funct;
+ $ERROR('#4 Only Function objects implement [[HasInstance]] and consequently can be proper ShiftExpression for The instanceof operator');
+}
+catch(e){
+ if (e instanceof TypeError !== true) {
+ $ERROR('#4 Only Function objects implement [[HasInstance]] and consequently can be proper ShiftExpression for The instanceof operator');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T1.js
new file mode 100644
index 000000000..7bd2f0041
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T1.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A7_T1;
+* @section: 11.8.6;
+* @assertion: When "instanceof" returns true it means that GetValue(RelationalExpression) is constructed with ShiftExpression;
+* @description: Checking Object object;
+*/
+
+var __obj={};
+
+//CHECK#1
+if (!(__obj instanceof Object)) {
+ $ERROR('#1: If instanceof returns true then GetValue(RelationalExpression) was constructed with ShiftExpression');
+}
+
+//CHECK#2
+if (__obj.constructor !== Object) {
+ $ERROR('#2: If instanceof returns true then GetValue(RelationalExpression) was constructed with ShiftExpression');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T2.js
new file mode 100644
index 000000000..143fa5c11
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A7_T2;
+* @section: 11.8.6;
+* @assertion: When "instanceof" returns true it means that GetValue(RelationalExpression) is constructed with ShiftExpression;
+* @description: Checking Array object;
+*/
+
+var __arr=[];
+
+//CHECK#1
+if (!(__arr instanceof Array)) {
+ $ERROR('#1: If instanceof returns true then GetValue(RelationalExpression) was constructed with ShiftExpression');
+}
+
+//CHECK#2
+if (__arr.constructor !== Array) {
+ $ERROR('#2: If instanceof returns true then GetValue(RelationalExpression) was constructed with ShiftExpression');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T3.js
new file mode 100644
index 000000000..01b877567
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.6_The_instanceof_operator/S11.8.6_A7_T3.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.6_A7_T3;
+* @section: 11.8.6;
+* @assertion: When "instanceof" returns true it means that GetValue(RelationalExpression) is constructed with ShiftExpression;
+* @description: Checking Function object;
+*/
+
+var __func = new Function;
+
+//CHECK#1
+if (!(__func instanceof Function)) {
+ $ERROR('#1: If instanceof returns true then GetValue(RelationalExpression) was constructed with ShiftExpression');
+}
+
+//CHECK#2
+if (__func.constructor !== Function) {
+ $ERROR('#2: If instanceof returns true then GetValue(RelationalExpression) was constructed with ShiftExpression');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A1.js
new file mode 100644
index 000000000..91d445af3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.7_A1;
+* @section: 11.8.7, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between RelationalExpression and "in" and between "in" and ShiftExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("'MAX_VALUE'\u0009in\u0009Number") !== true) {
+ $ERROR('#1: "MAX_VALUE"\\u0009in\\u0009Number === true');
+}
+
+//CHECK#2
+if (eval("'MAX_VALUE'\u000Bin\u000BNumber") !== true) {
+ $ERROR('#2: "MAX_VALUE"\\u000Bin\\u000BNumber === true');
+}
+
+//CHECK#3
+if (eval("'MAX_VALUE'\u000Cin\u000CNumber") !== true) {
+ $ERROR('#3: "MAX_VALUE"\\u000Cin\\u000CNumber === true');
+}
+
+//CHECK#4
+if (eval("'MAX_VALUE'\u0020in\u0020Number") !== true) {
+ $ERROR('#4: "MAX_VALUE"\\u0020in\\u0020Number === true');
+}
+
+//CHECK#5
+if (eval("'MAX_VALUE'\u00A0in\u00A0Number") !== true) {
+ $ERROR('#5: "MAX_VALUE"\\u00A0in\\u00A0Number === true');
+}
+
+//CHECK#6
+if (eval("'MAX_VALUE'\u000Ain\u000ANumber") !== true) {
+ $ERROR('#6: "MAX_VALUE"\\u000Ain\\u000ANumber === true');
+}
+
+//CHECK#7
+if (eval("'MAX_VALUE'\u000Din\u000DNumber") !== true) {
+ $ERROR('#7: "MAX_VALUE"\\u000Din\\u000DNumber === true');
+}
+
+//CHECK#8
+if (eval("'MAX_VALUE'\u2028in\u2028Number") !== true) {
+ $ERROR('#8: "MAX_VALUE"\\u2028in\\u2028Number === true');
+}
+
+//CHECK#9
+if (eval("'MAX_VALUE'\u2029in\u2029Number") !== true) {
+ $ERROR('#9: "MAX_VALUE"\\u2029in\\u2029Number === true');
+}
+
+//CHECK#10
+if (eval("'MAX_VALUE'\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029in\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029Number") !== true) {
+ $ERROR('#10: "MAX_VALUE"\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029in\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029Number === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T1.js
new file mode 100644
index 000000000..e16410e7f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T1.js
@@ -0,0 +1,34 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.7_A2.1_T1;
+ * @section: 11.8.7;
+ * @assertion: Operator "in" uses GetValue;
+ * @description: Either Expression is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if ("MAX_VALUE" in Number !== true) {
+ $ERROR('#1: "MAX_VALUE" in Number === true');
+}
+
+//CHECK#2
+var x = "MAX_VALUE";
+if (x in Number !== true) {
+ $ERROR('#2: var x = "MAX_VALUE"; x in Number === true');
+}
+
+//CHECK#3
+var y = Number;
+if ("MAX_VALUE" in y !== true) {
+ $ERROR('#3: var y = Number; "MAX_VALUE" in y === true');
+}
+
+//CHECK#4
+var x = "MAX_VALUE";
+var y = Number;
+if (x in y !== true) {
+ $ERROR('#4: var x = "MAX_VALUE"; var y = Number; x in y === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T2.js
new file mode 100644
index 000000000..8c5b353b0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.7_A2.1_T2;
+* @section: 11.8.7;
+* @assertion: Operator "in" uses GetValue;
+* @description: If GetBase(RelationalExpression) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ MAX_VALUE in Number;
+ $ERROR('#1.1: MAX_VALUE in Number throw ReferenceError. Actual: ' + (MAX_VALUE in Number));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: MAX_VALUE in Number throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T3.js
new file mode 100644
index 000000000..b08ff3cc1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.1_T3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.7_A2.1_T3;
+* @section: 11.8.7;
+* @assertion: Operator "in" uses GetValue;
+* @description: If GetBase(ShiftExpression) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ "MAX_VALUE" in NUMBER;
+ $ERROR('#1.1: "MAX_VALUE" in NUMBER throw ReferenceError. Actual: ' + ("MAX_VALUE" in NUMBER));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: "MAX_VALUE" in NUMBER throw ReferenceError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T1.js
new file mode 100644
index 000000000..8f874ed6e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.7_A2.4_T1;
+ * @section: 11.8.7;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var NUMBER = 0;
+if ((NUMBER = Number, "MAX_VALUE") in NUMBER !== true) {
+ $ERROR('#1: var NUMBER = 0; (NUMBER = Number, "MAX_VALUE") in NUMBER === true');
+}
+
+//CHECK#2
+var max_value = "MAX_VALUE";
+if (max_value in (max_value = "none", Number) !== true) {
+ $ERROR('#2: var max_value = "MAX_VALUE"; max_value in (max_value = "none", Number) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T2.js
new file mode 100644
index 000000000..1f1e645f3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.7_A2.4_T2;
+ * @section: 11.8.7;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() in y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() in y() throw "x". Actual: ' + (x() in y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() in y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T3.js
new file mode 100644
index 000000000..42e63d81f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.8.7_A2.4_T3;
+ * @section: 11.8.7;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ max_value in (max_value = "MAX_VALUE", Number);
+ $ERROR('#1.1: max_value in (max_value = "MAX_VALUE", Number) throw ReferenceError. Actual: ' + (max_value in (max_value = "MAX_VALUE", Number)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: max_value in (max_value = "MAX_VALUE", Number) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((NUMBER = Number, "MAX_VALUE") in NUMBER !== true) {
+ $ERROR('#2: (NUMBER = Number, "MAX_VALUE") in NUMBER !== true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A3.js
new file mode 100644
index 000000000..47996cb5e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A3.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.7_A3;
+* @section: 11.8.7;
+* @assertion: If ShiftExpression is not an object, throw TypeError;
+* @description: Checking all the types of primitives;
+*/
+
+//CHECK#1
+try {
+ "toString" in true;
+ $ERROR('#1: "toString" in true throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#1: "toString" in true throw TypeError');
+ }
+}
+
+//CHECK#2
+try {
+ "MAX_VALUE" in 1;
+ $ERROR('#2: "MAX_VALUE" in 1 throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#2: "MAX_VALUE" in 1 throw TypeError');
+ }
+}
+
+//CHECK#3
+try {
+ "length" in "string";
+ $ERROR('#3: "length" in "string" throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#3: "length" in "string" throw TypeError');
+ }
+}
+
+//CHECK#4
+try {
+ "toString" in undefined;
+ $ERROR('#4: "toString" in undefined throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#4: "toString" in undefined throw TypeError');
+ }
+}
+
+//CHECK#5
+try {
+ "toString" in null;
+ $ERROR('#5: "toString" in null throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#5: "toString" in null throw TypeError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A4.js
new file mode 100644
index 000000000..7f92b44fc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.8_Relational_Operators/11.8.7_The_in_operator/S11.8.7_A4.js
@@ -0,0 +1,37 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.8.7_A4;
+* @section: 11.8.7, 9.8;
+* @assertion: Operator "in" calls ToString(ShiftExpression);
+* @description: Checking ToString coversion;;
+*/
+
+//CHECK#1
+var object = {};
+object["true"] = 1;
+if (true in object !== "true" in object) {
+ $ERROR('#1: "var object = {}; object["true"] = 1; true in object === "true" in object');
+}
+
+//CHECK#2
+var object = {};
+object.Infinity = 1;
+if (Infinity in object !== "Infinity" in object) {
+ $ERROR('#2: "var object = {}; object.Infinity = 1; Infinity in object === "Infinity" in object');
+}
+
+//CHECK#4
+var object = {};
+object.undefined = 1;
+if (undefined in object !== "undefined" in object) {
+ $ERROR('#4: "var object = {}; object.undefined = 1; undefined in object === "undefined" in object');
+}
+
+//CHECK#5
+var object = {};
+object["null"] = 1;
+if (null in object !== "null" in object) {
+ $ERROR('#5: "var object = {}; object["null"] = 1; null in object === "null" in object');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A1.js
new file mode 100644
index 000000000..637f50ef9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.9.1_A1;
+* @section: 11.9.1, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between EqualityExpression and "==" or between "==" and RelationalExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("true\u0009==\u00091") !== true) {
+ $ERROR('#1: (true\\u0009==\\u00091) === true');
+}
+
+//CHECK#2
+if (eval("true\u000B==\u000B1") !== true) {
+ $ERROR('#2: (true\\u000B==\\u000B1) === true');
+}
+
+//CHECK#3
+if (eval("true\u000C==\u000C1") !== true) {
+ $ERROR('#3: (true\\u000C==\\u000C1) === true');
+}
+
+//CHECK#4
+if (eval("true\u0020==\u00201") !== true) {
+ $ERROR('#4: (true\\u0020==\\u00201) === true');
+}
+
+//CHECK#5
+if (eval("true\u00A0==\u00A01") !== true) {
+ $ERROR('#5: (true\\u00A0==\\u00A01) === true');
+}
+
+//CHECK#6
+if (eval("true\u000A==\u000A1") !== true) {
+ $ERROR('#6: (true\\u000A==\\u000A1) === true');
+}
+
+//CHECK#7
+if (eval("true\u000D==\u000D1") !== true) {
+ $ERROR('#7: (true\\u000D==\\u000D1) === true');
+}
+
+//CHECK#8
+if (eval("true\u2028==\u20281") !== true) {
+ $ERROR('#8: (true\\u2028==\\u20281) === true');
+}
+
+//CHECK#9
+if (eval("true\u2029==\u20291") !== true) {
+ $ERROR('#9: (true\\u2029==\\u20291) === true');
+}
+
+//CHECK#10
+if (eval("true\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029==\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== true) {
+ $ERROR('#10: (true\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029==\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T1.js
new file mode 100644
index 000000000..8a751c0b3
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A2.1_T1;
+ * @section: 11.9.1;
+ * @assertion: Operator x == y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if ((1 == 1) !== true) {
+ $ERROR('#1: (1 == 1) === true');
+}
+
+//CHECK#2
+var x = 1;
+if ((x == 1) !== true) {
+ $ERROR('#2: var x = 1; (x == 1) === true');
+}
+
+//CHECK#3
+var y = 1;
+if ((1 == y) !== true) {
+ $ERROR('#3: var y = 1; (1 == y) === true');
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if ((x == y) !== true) {
+ $ERROR('#4: var x = 1; var y = 1; (x == y) === true');
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if ((objectx.prop == objecty.prop) !== true) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; (objectx.prop == objecty.prop) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T2.js
new file mode 100644
index 000000000..e631cf4a0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A2.1_T2;
+ * @section: 11.9.1;
+ * @assertion: Operator x == y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x == 1;
+ $ERROR('#1.1: x == 1 throw ReferenceError. Actual: ' + (x == 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x == 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T3.js
new file mode 100644
index 000000000..87dfd3630
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A2.1_T3;
+ * @section: 11.9.1;
+ * @assertion: Operator x == y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 == y;
+ $ERROR('#1.1: 1 == y throw ReferenceError. Actual: ' + (1 == y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 == y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T1.js
new file mode 100644
index 000000000..e712df117
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A2.4_T1;
+ * @section: 11.9.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if (((x = 1) == x) !== true) {
+ $ERROR('#1: var x = 0; ((x = 1) == x) === true');
+}
+
+//CHECK#2
+var x = 0;
+if ((x == (x = 1)) !== false) {
+ $ERROR('#2: var x = 0; (x == (x = 1)) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T2.js
new file mode 100644
index 000000000..7f9642a5f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A2.4_T2;
+ * @section: 11.9.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() == y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() == y() throw "x". Actual: ' + (x() == y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() == y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T3.js
new file mode 100644
index 000000000..ee4f3cc27
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A2.4_T3;
+ * @section: 11.9.1;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x == (x = 1);
+ $ERROR('#1.1: x == (x = 1) throw ReferenceError. Actual: ' + (x == (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x == (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if (((y = 1) == y) !== true) {
+ $ERROR('#2: ((y = 1) == y) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.1.js
new file mode 100644
index 000000000..c9ca2a415
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A3.1;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: Return true, if x and y are both true or both false; otherwise, return false;
+ * @description: x and y are boolean primitives;
+ */
+
+//CHECK#1
+if ((true == true) !== true) {
+ $ERROR('#1: (true == true) === true');
+}
+
+//CHECK#2
+if ((false == false) !== true) {
+ $ERROR('#2: (false == false) === true');
+}
+
+//CHECK#3
+if ((true == false) !== false) {
+ $ERROR('#3: (true == false) === false');
+}
+
+//CHECK#4
+if ((false == true) !== false) {
+ $ERROR('#4: (false == true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.2.js
new file mode 100644
index 000000000..9306cefd8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A3.2;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is Boolean and Type(y) is Number,
+ * return the result of comparison ToNumber(x) == y;
+ * @description: x is primitive boolean, y is primitive number;
+ */
+
+//CHECK#1
+if ((true == 1) !== true) {
+ $ERROR('#1: (true == 1) === true');
+}
+
+//CHECK#2
+if ((false == "0") !== true) {
+ $ERROR('#2: (false == "0") === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.3.js
new file mode 100644
index 000000000..2548c4b2e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A3.3.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A3.3;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(y) is Number and Type(y) is Boolean,
+ * return the result of comparison x == ToNumber(y);
+ * @description: x is primitive number, y is primitive boolean;
+ */
+
+//CHECK#1
+if ((0 == false) !== true) {
+ $ERROR('#1: (0 == false) === true');
+}
+
+//CHECK#2
+if (("1" == true) !== true) {
+ $ERROR('#2: ("1" == true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.1_T1.js
new file mode 100644
index 000000000..16e798bb1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.1_T1.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A4.1_T1;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If x or y is NaN, return false;
+ * @description: x is NaN;
+*/
+
+//CHECK#1
+if ((Number.NaN == true) !== false) {
+ $ERROR('#1: (NaN == true) === false');
+}
+
+//CHECK#2
+if ((Number.NaN == 1) !== false) {
+ $ERROR('#2: (NaN == 1) === false');
+}
+
+//CHECK#3
+if ((Number.NaN == Number.NaN) !== false) {
+ $ERROR('#3: (NaN == NaN) === false');
+}
+
+//CHECK#4
+if ((Number.NaN == Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#4: (NaN == +Infinity) === false');
+}
+
+//CHECK#5
+if ((Number.NaN == Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#5: (NaN == -Infinity) === false');
+}
+
+//CHECK#6
+if ((Number.NaN == Number.MAX_VALUE) !== false) {
+ $ERROR('#6: (NaN == Number.MAX_VALUE) === false');
+}
+
+//CHECK#7
+if ((Number.NaN == Number.MIN_VALUE) !== false) {
+ $ERROR('#7: (NaN == Number.MIN_VALUE) === false');
+}
+
+//CHECK#8
+if ((Number.NaN == "string") !== false) {
+ $ERROR('#8: (NaN == "string") === false');
+}
+
+//CHECK#9
+if ((Number.NaN == new Object()) !== false) {
+ $ERROR('#9: (NaN == new Object()) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.1_T2.js
new file mode 100644
index 000000000..78d0dd8be
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.1_T2.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A4.1_T2;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If x or y is NaN, return false;
+ * @description: y is NaN;
+*/
+
+//CHECK#1
+if ((true == Number.NaN) !== false) {
+ $ERROR('#1: (true == NaN) === false');
+}
+
+//CHECK#2
+if ((-1 == Number.NaN) !== false) {
+ $ERROR('#2: (-1 == NaN) === false');
+}
+
+//CHECK#3
+if ((Number.NaN == Number.NaN) !== false) {
+ $ERROR('#3: (NaN == NaN) === false');
+}
+
+//CHECK#4
+if ((Number.POSITIVE_INFINITY == Number.NaN) !== false) {
+ $ERROR('#4: (+Infinity == NaN) === false');
+}
+
+//CHECK#5
+if ((Number.NEGATIVE_INFINITY == Number.NaN) !== false) {
+ $ERROR('#5: (-Infinity == NaN) === false');
+}
+
+//CHECK#6
+if ((Number.MAX_VALUE == Number.NaN) !== false) {
+ $ERROR('#6: (Number.MAX_VALUE == NaN) === false');
+}
+
+//CHECK#7
+if ((Number.MIN_VALUE == Number.NaN) !== false) {
+ $ERROR('#7: (Number.MIN_VALUE == NaN) === false');
+}
+
+//CHECK#8
+if (("string" == Number.NaN) !== false) {
+ $ERROR('#8: ("string" == NaN) === false');
+}
+
+//CHECK#9
+if ((new Object() == Number.NaN) !== false) {
+ $ERROR('#9: (new Object() == NaN) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.2.js
new file mode 100644
index 000000000..303505e0d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A4.2;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If x is +0(-0) and y is -0(+0), return true;
+ * @description: Checking all combinations;
+*/
+
+//CHECK#1
+if ((+0 == -0) !== true) {
+ $ERROR('#1: (+0 == -0) === true');
+}
+
+//CHECK#2
+if ((-0 == +0) !== true) {
+ $ERROR('#2: (-0 == +0) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.3.js
new file mode 100644
index 000000000..5ed26d722
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A4.3.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A4.3;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: Type(x) and Type(y) are Number-s minus NaN, +0, -0.
+ * Return true, if x is the same number value as y; otherwise, return false;
+ * @description: x and y are primitive numbers;
+*/
+
+//CHECK#1
+if ((Number.POSITIVE_INFINITY == Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#1: (+Infinity == +Infinity) === true');
+}
+
+//CHECK#2
+if ((Number.NEGATIVE_INFINITY == Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#2: (-Infinity == -Infinity) === true');
+}
+
+//CHECK#3
+if ((Number.POSITIVE_INFINITY == -Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#3: (+Infinity == -(-Infinity)) === true');
+}
+
+//CHECK#4
+if ((1 == 0.999999999999) !== false) {
+ $ERROR('#4: (1 == 0.999999999999) === false');
+}
+
+//CHECK#5
+if ((1.0 == 1) !== true) {
+ $ERROR('#5: (1.0 == 1) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.1.js
new file mode 100644
index 000000000..6e2c34006
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.1.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A5.1;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: Type(x) and Type(y) are String-s.
+ * Return true, if x and y are exactly the same sequence of characters; otherwise, return false;
+ * @description: x and y are primitive string;
+ */
+
+//CHECK#1
+if (("" == "") !== true) {
+ $ERROR('#1: ("" == "") === true');
+}
+
+//CHECK#2
+if ((" " == " ") !== true) {
+ $ERROR('#2: " (" == " ") === true');
+}
+
+//CHECK#3
+if ((" " == "") !== false) {
+ $ERROR('#3: " (" == "") === false');
+}
+
+//CHECK#4
+if (("string" == "string") !== true) {
+ $ERROR('#4: ("string" == "string") === true');
+}
+
+//CHECK#5
+if ((" string" == "string ") !== false) {
+ $ERROR('#5: (" string" == "string ") === false');
+}
+
+//CHECK#6
+if (("1.0" == "1") !== false) {
+ $ERROR('#6: ("1.0" == "1") === false');
+}
+
+//CHECK#7
+if (("0xff" == "255") !== false) {
+ $ERROR('#7: ("0xff" == "255") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.2.js
new file mode 100644
index 000000000..c9357227e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A5.2;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is Number and Type(y) is String,
+ * return the result of comparison x == ToNumber(y);
+ * @description: x is primitive number, y is primitive string;
+ */
+
+//CHECK#1
+if ((1 == "1") !== true) {
+ $ERROR('#1: (1 == "1") === true');
+}
+
+//CHECK#2
+if ((1.100 == "+1.10") !== true) {
+ $ERROR('#2: (1.100 == "+1.10") === true');
+}
+
+//CHECK#3
+if ((1 == "true") !== false) {
+ $ERROR('#3: (1 == "true") === false');
+}
+
+//CHECK#4
+if ((255 == "0xff") !== true) {
+ $ERROR('#4: (255 == "0xff") === true');
+}
+
+//CHECK#5
+if ((0 == "") !== true) {
+ $ERROR('#5: (0 == "") === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.3.js
new file mode 100644
index 000000000..c947908e9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A5.3.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A5.3;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is String and Type(y) is Number,
+ * return the result of comparison ToNumber(x) == y;
+ * @description: x is primitive string, y is primitive number;
+ */
+
+//CHECK#1
+if (("-1" == -1) !== true) {
+ $ERROR('#1: ("-1" == -1) === true');
+}
+
+//CHECK#2
+if (("-1.100" == -1.10) !== true) {
+ $ERROR('#2: ("-1.100" == -1.10) === true');
+}
+
+//CHECK#3
+if (("false" == 0) !== false) {
+ $ERROR('#3: ("false" == 0) === false');
+}
+
+//CHECK#4
+if (("5e-324" == 5e-324) !== true) {
+ $ERROR('#4: ("5e-324" == 5e-324) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.1.js
new file mode 100644
index 000000000..6d59e89b6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A6.1;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) as well as Type(y) is undefined or null, return true;
+ * @description: Checking all combinations;
+*/
+
+//CHECK#1
+if ((undefined == undefined) !== true) {
+ $ERROR('#1: (undefined == undefined) === true');
+}
+
+//CHECK#2
+if ((void 0 == undefined) !== true) {
+ $ERROR('#2: (void 0 == undefined) === true');
+}
+
+//CHECK#3
+if ((undefined == eval("var x")) !== true) {
+ $ERROR('#3: (undefined == eval("var x")) === true');
+}
+
+//CHECK#4
+if ((undefined == null) !== true) {
+ $ERROR('#4: (undefined == null) === true');
+}
+
+//CHECK#5
+if ((null == void 0) !== true) {
+ $ERROR('#5: (null == void 0) === true');
+}
+
+//CHECK#6
+if ((null == null) !== true) {
+ $ERROR('#6: (null == null) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.2_T1.js
new file mode 100644
index 000000000..2d8e77275
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.2_T1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A6.2_T1;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If one expression is undefined or null and another is not, return false;
+ * @description: x is null or undefined, y is not;
+*/
+
+//CHECK#1
+if ((undefined == true) !== false) {
+ $ERROR('#1: (undefined == true) === false');
+}
+
+//CHECK#2
+if ((undefined == 0) !== false) {
+ $ERROR('#2: (undefined == 0) === false');
+}
+
+//CHECK#3
+if ((undefined == "undefined") !== false) {
+ $ERROR('#3: (undefined == "undefined") === false');
+}
+
+//CHECK#4
+if ((undefined == {}) !== false) {
+ $ERROR('#4: (undefined == {}) === false');
+}
+
+//CHECK#5
+if ((null == false) !== false) {
+ $ERROR('#5: (null == false) === false');
+}
+
+//CHECK#6
+if ((null == 0) !== false) {
+ $ERROR('#6: (null == 0) === false');
+}
+
+//CHECK#7
+if ((null == "null") !== false) {
+ $ERROR('#7: (null == "null") === false');
+}
+
+//CHECK#8
+if ((null == {}) !== false) {
+ $ERROR('#8: (null == {}) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.2_T2.js
new file mode 100644
index 000000000..f0de41ae1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A6.2_T2.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A6.2_T2;
+ * @section: 11.9.1, 11.9.3;
+* @assertion: If one expression is undefined or null and another is not, return false;
+ * @description: y is null or undefined, x is not;
+*/
+
+//CHECK#1
+if ((false == undefined) !== false) {
+ $ERROR('#1: (false == undefined) === false');
+}
+
+//CHECK#2
+if ((Number.NaN == undefined) !== false) {
+ $ERROR('#2: (Number.NaN == undefined) === false');
+}
+
+//CHECK#3
+if (("undefined" == undefined) !== false) {
+ $ERROR('#3: ("undefined" == undefined) === false');
+}
+
+//CHECK#4
+if (({} == undefined) !== false) {
+ $ERROR('#4: ({} == undefined) === false');
+}
+
+//CHECK#5
+if ((false == null) !== false) {
+ $ERROR('#5: (false == null) === false');
+}
+
+//CHECK#6
+if ((0 == null) !== false) {
+ $ERROR('#6: (0 == null) === false');
+}
+
+//CHECK#7
+if (("null" == null) !== false) {
+ $ERROR('#7: ("null" == null) === false');
+}
+
+//CHECK#8
+if (({} == null) !== false) {
+ $ERROR('#8: ({} == null) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.1.js
new file mode 100644
index 000000000..f416f2ea9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.1.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A7.1;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: Type(x) and Type(y) are Object-s.
+ * Return true, if x and y are references to the same Object; otherwise, return false;
+ * @description: Checking Boolean object, Number object, String object, Object object;
+ */
+
+//CHECK#1
+if ((new Boolean(true) == new Boolean(true)) !== false) {
+ $ERROR('#1: (new Boolean(true) == new Boolean(true)) === false');
+}
+
+//CHECK#2
+if ((new Number(1) == new Number(1)) !== false) {
+ $ERROR('#2: (new Number(1) == new Number(1)) === false');
+}
+
+//CHECK#3
+if ((new String("x") == new String("x")) !== false) {
+ $ERROR('#3: (new String("x") == new String("x")) === false');
+}
+
+//CHECK#4
+if ((new Object() == new Object()) !== false) {
+ $ERROR('#4: (new Object() == new Object()) === false');
+}
+
+//CHECK#5
+x = {};
+y = x;
+if ((x == y) !== true) {
+ $ERROR('#5: x = {}; y = x; (x == y) === true');
+}
+
+//CHECK#6
+if ((new Boolean(true) == new Number(1)) !== false) {
+ $ERROR('#6 (new Boolean(true) == new Number(1)) === false');
+}
+
+//CHECK#7
+if ((new Number(1) == new String("1")) !== false) {
+ $ERROR('#7: (new Number(1) == new String("1")) === false');
+}
+
+//CHECK#8
+if ((new String("1") == new Boolean(true)) !== false) {
+ $ERROR('#8: (new String("x") == new Boolean(true)) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.2.js
new file mode 100644
index 000000000..dabd9d1f9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A7.2;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is Object and Type(y) is Boolean,
+ * return ToPrimitive(x) == y;
+ * @description: x is object, y is primitive boolean;
+*/
+
+//CHECK#1
+if ((new Boolean(true) == true) !== true) {
+ $ERROR('#1: (new Boolean(true) == true) === true');
+}
+
+//CHECK#2
+if ((new Number(1) == true) !== true) {
+ $ERROR('#2: (new Number(1) == true) === true');
+}
+
+//CHECK#3
+if ((new String("1") == true) !== true) {
+ $ERROR('#3: (new String("1") == true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.3.js
new file mode 100644
index 000000000..efc959768
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.3.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A7.3;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is Boolean and Type(y) is Object,
+ * return x == ToPrimitive(y);
+ * @description: y is object, x is primitive boolean;
+ */
+
+//CHECK#1
+if ((true == new Boolean(true)) !== true) {
+ $ERROR('#1: (true == new Boolean(true)) === true');
+}
+
+//CHECK#2
+if ((true == new Number(1)) !== true) {
+ $ERROR('#2: (true == new Number(1)) === true');
+}
+
+//CHECK#3
+if ((true == new String("+1")) !== true) {
+ $ERROR('#3: (true == new String("+1")) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.4.js
new file mode 100644
index 000000000..229fe3859
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.4.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A7.4;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is Object and Type(y) is Number,
+ * return ToPrimitive(x) == y;
+ * @description: x is object, y is primitive number;
+*/
+
+//CHECK#1
+if ((new Boolean(true) == 1) !== true) {
+ $ERROR('#1: (new Boolean(true) == 1) === true');
+}
+
+//CHECK#2
+if ((new Number(-1) == -1) !== true) {
+ $ERROR('#2: (new Number(-1) == -1) === true');
+}
+
+//CHECK#3
+if ((new String("-1") == -1) !== true) {
+ $ERROR('#3: (new String("-1") == -1) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.5.js
new file mode 100644
index 000000000..e87efbf77
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.5.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A7.5;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is Number and Type(y) is Object,
+ * return x == ToPrimitive(y);
+ * @description: y is object, x is primitive number;
+ */
+
+//CHECK#1
+if ((1 == new Boolean(true)) !== true) {
+ $ERROR('#1: (1 == new Boolean(true)) === true');
+}
+
+//CHECK#2
+if ((-1 == new Number(-1)) !== true) {
+ $ERROR('#2: (-1 == new Number(-1)) === true');
+}
+
+//CHECK#3
+if ((-1 == new String("-1")) !== true) {
+ $ERROR('#3: (-1 == new String("-1")) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.6.js
new file mode 100644
index 000000000..092a50f5d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.6.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A7.6;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is Object and Type(y) is String,
+ * return ToPrimitive(x) == y;
+ * @description: x is object, y is primitive string;
+ */
+
+//CHECK#1
+if ((new Boolean(true) == "1") !== true) {
+ $ERROR('#1: (new Boolean(true) == "1") === true');
+}
+
+//CHECK#2
+if ((new Number(-1) == "-1") !== true) {
+ $ERROR('#2: (new Number(-1) == "-1") === true');
+}
+
+//CHECK#3
+if ((new String("x") == "x") !== true) {
+ $ERROR('#3: (new String("x") == "x") === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.7.js
new file mode 100644
index 000000000..77d8d4847
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.7.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A7.7;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is String and Type(y) is Object,
+ * return x == ToPrimitive(y);
+ * @description: y is object, x is primitive string;
+ */
+
+//CHECK#1
+if (("1" == new Boolean(true)) !== true) {
+ $ERROR('#1: ("1" == new Boolean(true)) === true');
+}
+
+//CHECK#2
+if (("-1" == new Number(-1)) !== true) {
+ $ERROR('#2: ("-1" == new Number(-1)) === true');
+}
+
+//CHECK#3
+if (("x" == new String("x")) !== true) {
+ $ERROR('#3: ("x" == new String("x")) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.8.js
new file mode 100644
index 000000000..586f09748
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.8.js
@@ -0,0 +1,75 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A7.8;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is Object and Type(y) is primitive type,
+ * return ToPrimitive(x) == y;
+ * @description: x is object, y is primtitive;
+ */
+
+//CHECK#1
+if (({valueOf: function() {return 1}} == true) !== true) {
+ $ERROR('#1: ({valueOf: function() {return 1}} == true) === true');
+}
+
+//CHECK#2
+if (({valueOf: function() {return 1}, toString: function() {return 0}} == 1) !== true) {
+ $ERROR('#2: ({valueOf: function() {return 1}, toString: function() {return 0}} == 1) === true');
+}
+
+//CHECK#3
+if (({valueOf: function() {return 1}, toString: function() {return {}}} == "+1") !== true) {
+ $ERROR('#3: ({valueOf: function() {return 1}, toString: function() {return {}}} == "+1") === true');
+}
+
+//CHECK#4
+try {
+ if (({valueOf: function() {return "+1"}, toString: function() {throw "error"}} == true) !== true) {
+ $ERROR('#4.1: ({valueOf: function() {return "+1"}, toString: function() {throw "error"}} == true) === true');
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: ({valueOf: function() {return "+1"}, toString: function() {throw "error"}} == true) not throw "error"');
+ } else {
+ $ERROR('#4.3: ({valueOf: function() {return "+1"}, toString: function() {throw "error"}} == true) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (({toString: function() {return "+1"}} == 1) !== true) {
+ $ERROR('#5: ({toString: function() {return "+1"}} == 1) === true');
+}
+
+//CHECK#6
+if (({valueOf: function() {return {}}, toString: function() {return "+1"}} == "1") !== false) {
+ $ERROR('#6.1: ({valueOf: function() {return {}}, toString: function() {return "+1"}} == "1") === false');
+} else {
+ if (({valueOf: function() {return {}}, toString: function() {return "+1"}} == "+1") !== true) {
+ $ERROR('#6.2: ({valueOf: function() {return {}}, toString: function() {return "+1"}} == "+1") === true');
+ }
+}
+
+//CHECK#7
+try {
+ ({valueOf: function() {throw "error"}, toString: function() {return 1}} == 1);
+ $ERROR('#7.1: ({valueOf: function() {throw "error"}, toString: function() {return 1}} == 1) throw "error". Actual: ' + (({valueOf: function() {throw "error"}, toString: function() {return 1}} == 1)));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: ({valueOf: function() {throw "error"}, toString: function() {return 1}} == 1) throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ ({valueOf: function() {return {}}, toString: function() {return {}}} == 1);
+ $ERROR('#8.1: ({valueOf: function() {return {}}, toString: function() {return {}}} == 1) throw TypeError. Actual: ' + (({valueOf: function() {return {}}, toString: function() {return {}}} == 1)));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: ({valueOf: function() {return {}}, toString: function() {return {}}} == 1) throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.9.js
new file mode 100644
index 000000000..d20fdb5a5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.1_The_Equals_Operator/S11.9.1_A7.9.js
@@ -0,0 +1,75 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.1_A7.9;
+ * @section: 11.9.1, 11.9.3;
+ * @assertion: If Type(x) is primitive type and Type(y) is Object,
+ * return x == ToPrimitive(y);
+ * @description: y is object, x is primtitive;
+ */
+
+//CHECK#1
+if ((true == {valueOf: function() {return 1}}) !== true) {
+ $ERROR('#1: (true == {valueOf: function() {return 1}}) === true');
+}
+
+//CHECK#2
+if ((1 == {valueOf: function() {return 1}, toString: function() {return 0}}) !== true) {
+ $ERROR('#2: (1 == {valueOf: function() {return 1}, toString: function() {return 0}}) === true');
+}
+
+//CHECK#3
+if (("+1" == {valueOf: function() {return 1}, toString: function() {return {}}}) !== true) {
+ $ERROR('#3: ("+1" == {valueOf: function() {return 1}, toString: function() {return {}}}) === true');
+}
+
+//CHECK#4
+try {
+ if ((true == {valueOf: function() {return "+1"}, toString: function() {throw "error"}}) !== true) {
+ $ERROR('#4.1: (true == {valueOf: function() {return "+1"}, toString: function() {throw "error"}}) === true');
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: (true == {valueOf: function() {return "+1"}, toString: function() {throw "error"}}) not throw "error"');
+ } else {
+ $ERROR('#4.3: (true == {valueOf: function() {return "+1"}, toString: function() {throw "error"}}) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if ((1 == {toString: function() {return "+1"}}) !== true) {
+ $ERROR('#5: (1 == {toString: function() {return "+1"}}) === true');
+}
+
+//CHECK#6
+if (("1" == {valueOf: function() {return {}}, toString: function() {return "+1"}}) !== false) {
+ $ERROR('#6.1: ("1" == {valueOf: function() {return {}}, toString: function() {return "+1"}}) === false');
+} else {
+ if (("+1" == {valueOf: function() {return {}}, toString: function() {return "+1"}}) !== true) {
+ $ERROR('#6.2: ("+1" == {valueOf: function() {return {}}, toString: function() {return "+1"}}) === true');
+ }
+}
+
+//CHECK#7
+try {
+ (1 == {valueOf: function() {throw "error"}, toString: function() {return 1}});
+ $ERROR('#7.1: (1 == {valueOf: function() {throw "error"}, toString: function() {return 1}}) throw "error". Actual: ' + ((1 == {valueOf: function() {throw "error"}, toString: function() {return 1}})));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: (1 == {valueOf: function() {throw "error"}, toString: function() {return 1}}) throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ (1 == {valueOf: function() {return {}}, toString: function() {return {}}});
+ $ERROR('#8.1: (1 == {valueOf: function() {return {}}, toString: function() {return {}}}) throw TypeError. Actual: ' + ((1 == {valueOf: function() {return {}}, toString: function() {return {}}})));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: (1 == {valueOf: function() {return {}}, toString: function() {return {}}}) throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A1.js
new file mode 100644
index 000000000..b28112e40
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.9.2_A1;
+* @section: 11.9.2, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between EqualityExpression and "!=" or between "!=" and RelationalExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("true\u0009!=\u00091") !== false) {
+ $ERROR('#1: (true\\u0009!=\\u00091) === false');
+}
+
+//CHECK#2
+if (eval("true\u000B!=\u000B1") !== false) {
+ $ERROR('#2: (true\\u000B!=\\u000B1) === false');
+}
+
+//CHECK#3
+if (eval("true\u000C!=\u000C1") !== false) {
+ $ERROR('#3: (true\\u000C!=\\u000C1) === false');
+}
+
+//CHECK#4
+if (eval("true\u0020!=\u00201") !== false) {
+ $ERROR('#4: (true\\u0020!=\\u00201) === false');
+}
+
+//CHECK#5
+if (eval("true\u00A0!=\u00A01") !== false) {
+ $ERROR('#5: (true\\u00A0!=\\u00A01) === false');
+}
+
+//CHECK#6
+if (eval("true\u000A!=\u000A1") !== false) {
+ $ERROR('#6: (true\\u000A!=\\u000A1) === false');
+}
+
+//CHECK#7
+if (eval("true\u000D!=\u000D1") !== false) {
+ $ERROR('#7: (true\\u000D!=\\u000D1) === false');
+}
+
+//CHECK#8
+if (eval("true\u2028!=\u20281") !== false) {
+ $ERROR('#8: (true\\u2028!=\\u20281) === false');
+}
+
+//CHECK#9
+if (eval("true\u2029!=\u20291") !== false) {
+ $ERROR('#9: (true\\u2029!=\\u20291) === false');
+}
+
+//CHECK#10
+if (eval("true\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029!=\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291") !== false) {
+ $ERROR('#10: (true\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029!=\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T1.js
new file mode 100644
index 000000000..ad4d6d0b4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T1.js
@@ -0,0 +1,42 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A2.1_T1;
+ * @section: 11.9.2;
+ * @assertion: Operator x != y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if ((1 != 1) !== false) {
+ $ERROR('#1: (1 != 1) === false');
+}
+
+//CHECK#2
+var x = 1;
+if ((x != 1) !== false) {
+ $ERROR('#2: var x = 1; (x != 1) === false');
+}
+
+//CHECK#3
+var y = 1;
+if ((1 != y) !== false) {
+ $ERROR('#3: var y = 1; (1 != y) === false');
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if ((x != y) !== false) {
+ $ERROR('#4: var x = 1; var y = 1; (x != y) === false');
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if ((objectx.prop != objecty.prop) !== false) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; (objectx.prop != objecty.prop) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T2.js
new file mode 100644
index 000000000..bc78732e0
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A2.1_T2;
+ * @section: 11.9.2;
+ * @assertion: Operator x != y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x != 1;
+ $ERROR('#1.1: x != 1 throw ReferenceError. Actual: ' + (x != 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x != 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T3.js
new file mode 100644
index 000000000..353978e37
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A2.1_T3;
+ * @section: 11.9.2;
+ * @assertion: Operator x != y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 != y;
+ $ERROR('#1: 1 != y throw ReferenceError');
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 != y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T1.js
new file mode 100644
index 000000000..513caef75
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A2.4_T1;
+ * @section: 11.9.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if (((x = 1) != x) !== false) {
+ $ERROR('#1: var x = 0; ((x = 1) != x) === false');
+}
+
+//CHECK#2
+var x = 0;
+if ((x != (x = 1)) !== true) {
+ $ERROR('#2: var x = 0; (x != (x = 1)) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T2.js
new file mode 100644
index 000000000..2f86f3785
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A2.4_T2;
+ * @section: 11.9.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() != y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() != y() throw "x". Actual: ' + (x() != y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() != y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T3.js
new file mode 100644
index 000000000..519b668dc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A2.4_T3;
+ * @section: 11.9.2;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x != (x = 1);
+ $ERROR('#1.1: x != (x = 1) throw ReferenceError. Actual: ' + (x != (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x != (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if (((y = 1) != y) !== false) {
+ $ERROR('#2: ((y = 1) != y) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.1.js
new file mode 100644
index 000000000..330be229c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.1.js
@@ -0,0 +1,29 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A3.1;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: Return false, if x and y are both true or both false; otherwise, return true;
+ * @description: x and y are boolean primitives;
+ */
+
+//CHECK#1
+if ((true != true) !== false) {
+ $ERROR('#1: (true != true) === false');
+}
+
+//CHECK#2
+if ((false != false) !== false) {
+ $ERROR('#2: (false != false) === false');
+}
+
+//CHECK#3
+if ((true != false) !== true) {
+ $ERROR('#3: (true != false) === true');
+}
+
+//CHECK#4
+if ((false != true) !== true) {
+ $ERROR('#4: (false != true) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.2.js
new file mode 100644
index 000000000..1b76cf1f4
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.2.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A3.2;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is Boolean and Type(y) is Number,
+ * return the result of comparison ToNumber(x) != y;
+ * @description: x is primitive boolean, y is primitive number;
+ */
+
+//CHECK#1
+if ((true != 1) !== false) {
+ $ERROR('#1: (true != 1) === false');
+}
+
+//CHECK#2
+if ((false != "0") !== false) {
+ $ERROR('#2: (false != "0") === false');
+}
+
+//CHECK#3
+if ((true != new Boolean(true)) !== false) {
+ $ERROR('#3: (true != new Boolean(true)) === false');
+}
+
+//CHECK#4
+if ((true != {valueOf: function () {return 1}}) !== false) {
+ $ERROR('#4: (true != {valueOf: function () {return 1}}) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.3.js
new file mode 100644
index 000000000..383ecd18a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A3.3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A3.3;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(y) is Number and Type(y) is Boolean,
+ * return the result of comparison x != ToNumber(y);
+ * @description: x is primitive number, y is primitive boolean;
+ */
+
+//CHECK#1
+if ((0 != false) !== false) {
+ $ERROR('#1: (0 != false) === false');
+}
+
+//CHECK#2
+if (("1" != true) !== false) {
+ $ERROR('#2: ("1" != true) === false');
+}
+
+//CHECK#3
+if ((new Boolean(false) != false) !== false) {
+ $ERROR('#3: (new Boolean(false) != false) === false');
+}
+
+//CHECK#4
+if (({valueOf: function () {return "0"}} != false) !== false) {
+ $ERROR('#4: ({valueOf: function () {return "0"}} != false) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.1_T1.js
new file mode 100644
index 000000000..86d36429c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.1_T1.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A4.1_T1;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If x or y is NaN, return true;
+ * @description: x is NaN;
+*/
+
+//CHECK#1
+if ((Number.NaN != true) !== true) {
+ $ERROR('#1: (NaN != true) === true');
+}
+
+//CHECK#2
+if ((Number.NaN != 1) !== true) {
+ $ERROR('#2: (NaN != 1) === true');
+}
+
+//CHECK#3
+if ((Number.NaN != Number.NaN) !== true) {
+ $ERROR('#3: (NaN != NaN) === true');
+}
+
+//CHECK#4
+if ((Number.NaN != Number.POSITIVE_INFINITY) !== true) {
+ $ERROR('#4: (NaN != +Infinity) === true');
+}
+
+//CHECK#5
+if ((Number.NaN != Number.NEGATIVE_INFINITY) !== true) {
+ $ERROR('#5: (NaN != -Infinity) === true');
+}
+
+//CHECK#6
+if ((Number.NaN != Number.MAX_VALUE) !== true) {
+ $ERROR('#6: (NaN != Number.MAX_VALUE) === true');
+}
+
+//CHECK#7
+if ((Number.NaN != Number.MIN_VALUE) !== true) {
+ $ERROR('#7: (NaN != Number.MIN_VALUE) === true');
+}
+
+//CHECK#8
+if ((Number.NaN != "string") !== true) {
+ $ERROR('#8: (NaN != "string") === true');
+}
+
+//CHECK#9
+if ((Number.NaN != new Object()) !== true) {
+ $ERROR('#9: (NaN != new Object()) === true');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.1_T2.js
new file mode 100644
index 000000000..e0dd5081a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.1_T2.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A4.1_T2;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If x or y is NaN, return true;
+ * @description: y is NaN;
+*/
+
+//CHECK#1
+if ((true != Number.NaN) !== true) {
+ $ERROR('#1: (true != NaN) === true');
+}
+
+//CHECK#2
+if ((-1 != Number.NaN) !== true) {
+ $ERROR('#2: (-1 != NaN) === true');
+}
+
+//CHECK#3
+if ((Number.NaN != Number.NaN) !== true) {
+ $ERROR('#3: (NaN != NaN) === true');
+}
+
+//CHECK#4
+if ((Number.POSITIVE_INFINITY != Number.NaN) !== true) {
+ $ERROR('#4: (+Infinity != NaN) === true');
+}
+
+//CHECK#5
+if ((Number.NEGATIVE_INFINITY != Number.NaN) !== true) {
+ $ERROR('#5: (-Infinity != NaN) === true');
+}
+
+//CHECK#6
+if ((Number.MAX_VALUE != Number.NaN) !== true) {
+ $ERROR('#6: (Number.MAX_VALUE != NaN) === true');
+}
+
+//CHECK#7
+if ((Number.MIN_VALUE != Number.NaN) !== true) {
+ $ERROR('#7: (Number.MIN_VALUE != NaN) === true');
+}
+
+//CHECK#8
+if (("string" != Number.NaN) !== true) {
+ $ERROR('#8: ("string" != NaN) === true');
+}
+
+//CHECK#9
+if ((new Object() != Number.NaN) !== true) {
+ $ERROR('#9: (new Object() != NaN) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.2.js
new file mode 100644
index 000000000..78a6f0c4b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A4.2;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If x is +0(-0) and y is -0(+0), return false;
+ * @description: Checking all combinations;
+*/
+
+//CHECK#1
+if ((+0 != -0) !== false) {
+ $ERROR('#1: (+0 != -0) === false');
+}
+
+//CHECK#2
+if ((-0 != +0) !== false) {
+ $ERROR('#2: (-0 != +0) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.3.js
new file mode 100644
index 000000000..51e9e6d6d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A4.3.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A4.3;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: Type(x) and Type(y) are Number-s minus NaN, +0, -0.
+ * Return false, if x is the same number value as y; otherwise, return true;
+ * @description: x and y are primitive numbers;
+*/
+
+//CHECK#1
+if ((Number.POSITIVE_INFINITY != Number.POSITIVE_INFINITY) !== false) {
+ $ERROR('#1: (+Infinity != +Infinity) === false');
+}
+
+//CHECK#2
+if ((Number.NEGATIVE_INFINITY != Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#2: (-Infinity != -Infinity) === false');
+}
+
+//CHECK#3
+if ((Number.POSITIVE_INFINITY != -Number.NEGATIVE_INFINITY) !== false) {
+ $ERROR('#3: (+Infinity != -(-Infinity)) === false');
+}
+
+//CHECK#4
+if ((1 != 0.999999999999) !== true) {
+ $ERROR('#4: (1 != 0.999999999999) === true');
+}
+
+//CHECK#5
+if ((1.0 != 1) !== false) {
+ $ERROR('#5: (1.0 != 1) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.1.js
new file mode 100644
index 000000000..a33364a20
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.1.js
@@ -0,0 +1,45 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A5.1;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: Type(x) and Type(y) are String-s.
+ * Return true, if x and y are exactly the same sequence of characters; otherwise, return false;
+ * @description: x and y are primitive strings;
+ */
+
+//CHECK#1
+if (("" != "") !== false) {
+ $ERROR('#1: ("" != "") === false');
+}
+
+//CHECK#2
+if ((" " != " ") !== false) {
+ $ERROR('#2: " (" != " ") === false');
+}
+
+//CHECK#3
+if ((" " != "") !== true) {
+ $ERROR('#3: " (" != "") === true');
+}
+
+//CHECK#4
+if (("string" != "string") !== false) {
+ $ERROR('#4: ("string" != "string") === false');
+}
+
+//CHECK#5
+if ((" string" != "string ") !== true) {
+ $ERROR('#5: (" string" != "string ") === true');
+}
+
+//CHECK#6
+if (("1.0" != "1") !== true) {
+ $ERROR('#6: ("1.0" != "1") === true');
+}
+
+//CHECK#7
+if (("0xff" != "255") !== true) {
+ $ERROR('#7: ("0xff" != "255") === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.2.js
new file mode 100644
index 000000000..81efe0521
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.2.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A5.2;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is Number and Type(y) is String,
+ * return the result of comparison x != ToNumber(y);
+ * @description: x is primitive number, y is primitive string;
+ */
+
+//CHECK#1
+if ((1 != "1") !== false) {
+ $ERROR('#1: (1 != "1") === false');
+}
+
+//CHECK#2
+if ((1.100 != "+1.10") !== false) {
+ $ERROR('#2: (1.100 != "+1.10") === false');
+}
+
+//CHECK#3
+if ((1 != "true") !== true) {
+ $ERROR('#3: (1 != "true") === true');
+}
+
+//CHECK#4
+if ((255 != "0xff") !== false) {
+ $ERROR('#4: (255 != "0xff") === false');
+}
+
+//CHECK#5
+if ((0 != "") !== false) {
+ $ERROR('#5: (0 != "") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.3.js
new file mode 100644
index 000000000..d2b9f8802
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A5.3.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A5.3;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is String and Type(y) is Number,
+ * return the result of comparison ToNumber(x) != y;
+ * @description: x is primitive string, y is primitive number;
+ */
+
+//CHECK#1
+if (("-1" != -1) !== false) {
+ $ERROR('#1: ("-1" != -1) === false');
+}
+
+//CHECK#2
+if (("-1.100" != -1.10) !== false) {
+ $ERROR('#2: ("-1.100" != -1.10) === false');
+}
+
+//CHECK#3
+if (("false" != 0) !== true) {
+ $ERROR('#3: ("false" != 0) === true');
+}
+
+//CHECK#4
+if (("5e-324" != 5e-324) !== false) {
+ $ERROR('#4: ("5e-324" != 5e-324) === false');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.1.js
new file mode 100644
index 000000000..b1eff0595
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.1.js
@@ -0,0 +1,39 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A6.1;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) as well as Type(y) is Undefined or Null, return true;
+ * @description: Checking all combinations;
+*/
+
+//CHECK#1
+if ((undefined != undefined) !== false) {
+ $ERROR('#1: (undefined != undefined) === false');
+}
+
+//CHECK#2
+if ((void 0 != undefined) !== false) {
+ $ERROR('#2: (void 0 != undefined) === false');
+}
+
+//CHECK#3
+if ((undefined != eval("var x")) !== false) {
+ $ERROR('#3: (undefined != eval("var x")) === false');
+}
+
+//CHECK#4
+if ((undefined != null) !== false) {
+ $ERROR('#4: (undefined != null) === false');
+}
+
+//CHECK#5
+if ((null != void 0) !== false) {
+ $ERROR('#5: (null != void 0) === false');
+}
+
+//CHECK#6
+if ((null != null) !== false) {
+ $ERROR('#6: (null != null) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.2_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.2_T1.js
new file mode 100644
index 000000000..77459322f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.2_T1.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A6.2_T1;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If one expression is undefined or null and another is not, return false;
+ * @description: x is null or undefined, y is not;
+*/
+
+//CHECK#1
+if ((undefined != true) !== true) {
+ $ERROR('#1: (undefined != true) === true');
+}
+
+//CHECK#2
+if ((undefined != 0) !== true) {
+ $ERROR('#2: (undefined != 0) === true');
+}
+
+//CHECK#3
+if ((undefined != "undefined") !== true) {
+ $ERROR('#3: (undefined != "undefined") === true');
+}
+
+//CHECK#4
+if ((undefined != {}) !== true) {
+ $ERROR('#4: (undefined != {}) === true');
+}
+
+//CHECK#5
+if ((null != false) !== true) {
+ $ERROR('#5: (null != false) === true');
+}
+
+//CHECK#6
+if ((null != 0) !== true) {
+ $ERROR('#6: (null != 0) === true');
+}
+
+//CHECK#7
+if ((null != "null") !== true) {
+ $ERROR('#7: (null != "null") === true');
+}
+
+//CHECK#8
+if ((null != {}) !== true) {
+ $ERROR('#8: (null != {}) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.2_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.2_T2.js
new file mode 100644
index 000000000..7d4df946e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A6.2_T2.js
@@ -0,0 +1,49 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A6.2_T2;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If one expression is undefined or null and another is not, return false;
+ * @description: y is null or undefined, x is not;
+*/
+
+//CHECK#1
+if ((false != undefined) !== true) {
+ $ERROR('#1: (false != undefined) === true');
+}
+
+//CHECK#2
+if ((Number.NaN != undefined) !== true) {
+ $ERROR('#2: (Number.NaN != undefined) === true');
+}
+
+//CHECK#3
+if (("undefined" != undefined) !== true) {
+ $ERROR('#3: ("undefined" != undefined) === true');
+}
+
+//CHECK#4
+if (({} != undefined) !== true) {
+ $ERROR('#4: ({} != undefined) === true');
+}
+
+//CHECK#5
+if ((false != null) !== true) {
+ $ERROR('#5: (false != null) === true');
+}
+
+//CHECK#6
+if ((0 != null) !== true) {
+ $ERROR('#6: (0 != null) === true');
+}
+
+//CHECK#7
+if (("null" != null) !== true) {
+ $ERROR('#7: ("null" != null) === true');
+}
+
+//CHECK#8
+if (({} != null) !== true) {
+ $ERROR('#8: ({} != null) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.1.js
new file mode 100644
index 000000000..daa9218fd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.1.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A7.1;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: Type(x) and Type(y) are Object-s.
+ * Return true, if x and y are references to the same Object; otherwise, return false;
+ * @description: Checking Boolean object, Number object, String object, Object object;
+ */
+
+//CHECK#1
+if ((new Boolean(true) != new Boolean(true)) !== true) {
+ $ERROR('#1: (new Boolean(true) != new Boolean(true)) === true');
+}
+
+//CHECK#2
+if ((new Number(1) != new Number(1)) !== true) {
+ $ERROR('#2: (new Number(1) != new Number(1)) === true');
+}
+
+//CHECK#3
+if ((new String("x") != new String("x")) !== true) {
+ $ERROR('#3: (new String("x") != new String("x")) === true');
+}
+
+//CHECK#4
+if ((new Object() != new Object()) !== true) {
+ $ERROR('#4: (new Object() != new Object()) === true');
+}
+
+//CHECK#5
+x = {};
+y = x;
+if ((x != y) !== false) {
+ $ERROR('#5: x = {}; y = x; (x != y) === false');
+}
+
+//CHECK#6
+if ((new Boolean(true) != new Number(1)) !== true) {
+ $ERROR('#6 (new Boolean(true) != new Number(1)) === true');
+}
+
+//CHECK#7
+if ((new Number(1) != new String("1")) !== true) {
+ $ERROR('#7: (new Number(1) != new String("1")) === true');
+}
+
+//CHECK#8
+if ((new String("1") != new Boolean(true)) !== true) {
+ $ERROR('#8: (new String("x") != new Boolean(true)) === true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.2.js
new file mode 100644
index 000000000..cc60a640a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A7.2;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is Object and Type(y) is Boolean,
+ * return ToPrimitive(x) != y;
+ * @description: x is object, y is primitive boolean;
+*/
+
+//CHECK#1
+if ((new Boolean(true) != true) !== false) {
+ $ERROR('#1: (new Boolean(true) != true) === false');
+}
+
+//CHECK#2
+if ((new Number(1) != true) !== false) {
+ $ERROR('#2: (new Number(1) != true) === false');
+}
+
+//CHECK#3
+if ((new String("1") != true) !== false) {
+ $ERROR('#3: (new String("1") != true) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.3.js
new file mode 100644
index 000000000..90449b38c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.3.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A7.3;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is Boolean and Type(y) is Object,
+ * return x != ToPrimitive(y);
+ * @description: y is object, x is primitive boolean;
+ */
+
+//CHECK#1
+if ((true != new Boolean(true)) !== false) {
+ $ERROR('#1: (true != new Boolean(true)) === false');
+}
+
+//CHECK#2
+if ((true != new Number(1)) !== false) {
+ $ERROR('#2: (true != new Number(1)) === false');
+}
+
+//CHECK#3
+if ((true != new String("+1")) !== false) {
+ $ERROR('#3: (true != new String("+1")) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.4.js
new file mode 100644
index 000000000..59f178672
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.4.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A7.4;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is Object and Type(y) is Number,
+ * return ToPrimitive(x) != y;
+ * @description: x is object, y is primitive number;
+*/
+
+//CHECK#1
+if ((new Boolean(true) != 1) !== false) {
+ $ERROR('#1: (new Boolean(true) != 1) === false');
+}
+
+//CHECK#2
+if ((new Number(-1) != -1) !== false) {
+ $ERROR('#2: (new Number(-1) != -1) === false');
+}
+
+//CHECK#3
+if ((new String("-1") != -1) !== false) {
+ $ERROR('#3: (new String("-1") != -1) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.5.js
new file mode 100644
index 000000000..fc587b166
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.5.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A7.5;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is Number and Type(y) is Object,
+ * return x != ToPrimitive(y);
+ * @description: y is object, x is primitive number;
+ */
+
+//CHECK#1
+if ((1 != new Boolean(true)) !== false) {
+ $ERROR('#1: (1 != new Boolean(true)) === false');
+}
+
+//CHECK#2
+if ((-1 != new Number(-1)) !== false) {
+ $ERROR('#2: (-1 != new Number(-1)) === false');
+}
+
+//CHECK#3
+if ((-1 != new String("-1")) !== false) {
+ $ERROR('#3: (-1 != new String("-1")) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.6.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.6.js
new file mode 100644
index 000000000..d9d9566b6
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.6.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A7.6;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is Object and Type(y) is String,
+ * return ToPrimitive(x) != y;
+ * @description: x is object, y is primitive string;
+ */
+
+//CHECK#1
+if ((new Boolean(true) != "1") !== false) {
+ $ERROR('#1: (new Boolean(true) != "1") === false');
+}
+
+//CHECK#2
+if ((new Number(-1) != "-1") !== false) {
+ $ERROR('#2: (new Number(-1) != "-1") === false');
+}
+
+//CHECK#3
+if ((new String("x") != "x") !== false) {
+ $ERROR('#3: (new String("x") != "x") === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.7.js
new file mode 100644
index 000000000..56a8d5b52
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.7.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A7.7;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is String and Type(y) is Object,
+ * return x != ToPrimitive(y);
+ * @description: y is object, x is primitive string;
+ */
+
+//CHECK#1
+if (("1" != new Boolean(true)) !== false) {
+ $ERROR('#1: ("1" != new Boolean(true)) === false');
+}
+
+//CHECK#2
+if (("-1" != new Number(-1)) !== false) {
+ $ERROR('#2: ("-1" != new Number(-1)) === false');
+}
+
+//CHECK#3
+if (("x" != new String("x")) !== false) {
+ $ERROR('#3: ("x" != new String("x")) === false');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.8.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.8.js
new file mode 100644
index 000000000..0e2521ab5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.8.js
@@ -0,0 +1,75 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A7.8;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is Object and Type(y) is primitive type,
+ * return ToPrimitive(x) != y;
+ * @description: x is object, y is primtitive;
+ */
+
+//CHECK#1
+if ((true != {valueOf: function() {return 1}}) !== false) {
+ $ERROR('#1: (true != {valueOf: function() {return 1}}) === false');
+}
+
+//CHECK#2
+if ((1 != {valueOf: function() {return 1}, toString: function() {return 0}}) !== false) {
+ $ERROR('#2: (1 != {valueOf: function() {return 1}, toString: function() {return 0}}) === false');
+}
+
+//CHECK#3
+if (("+1" != {valueOf: function() {return 1}, toString: function() {return {}}}) !== false) {
+ $ERROR('#3: ("+1" != {valueOf: function() {return 1}, toString: function() {return {}}}) === false');
+}
+
+//CHECK#4
+try {
+ if ((true != {valueOf: function() {return "+1"}, toString: function() {throw "error"}}) !== false) {
+ $ERROR('#4.1: (true != {valueOf: function() {return "+1"}, toString: function() {throw "error"}}) === false');
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: (true != {valueOf: function() {return "+1"}, toString: function() {throw "error"}}) not throw "error"');
+ } else {
+ $ERROR('#4.3: (true != {valueOf: function() {return "+1"}, toString: function() {throw "error"}}) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if ((1 != {toString: function() {return "+1"}}) !== false) {
+ $ERROR('#5: (1 != {toString: function() {return "+1"}}) === false');
+}
+
+//CHECK#6
+if (("1" != {valueOf: function() {return {}}, toString: function() {return "+1"}}) !== true) {
+ $ERROR('#6.1: ("1" != {valueOf: function() {return {}}, toString: function() {return "+1"}}) === true');
+} else {
+ if (("+1" != {valueOf: function() {return {}}, toString: function() {return "+1"}}) !== false) {
+ $ERROR('#6.2: ("+1" != {valueOf: function() {return {}}, toString: function() {return "+1"}}) === false');
+ }
+}
+
+//CHECK#7
+try {
+ (1 != {valueOf: function() {throw "error"}, toString: function() {return 1}});
+ $ERROR('#7: (1 != {valueOf: function() {throw "error"}, toString: function() {return 1}}) throw "error"');
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7: (1 != {valueOf: function() {throw "error"}, toString: function() {return 1}}) throw "error"');
+ }
+}
+
+//CHECK#8
+try {
+ (1 != {valueOf: function() {return {}}, toString: function() {return {}}});
+ $ERROR('#8: (1 != {valueOf: function() {return {}}, toString: function() {return {}}}) throw TypeError');
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8: (1 != {valueOf: function() {return {}}, toString: function() {return {}}}) throw TypeError');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.9.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.9.js
new file mode 100644
index 000000000..6b91adb63
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.2_The_Does_not_equals_Operator/S11.9.2_A7.9.js
@@ -0,0 +1,75 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.2_A7.9;
+ * @section: 11.9.2, 11.9.3;
+ * @assertion: If Type(x) is primitive type and Type(y) is Object,
+ * return x != ToPrimitive(y);
+ * @description: y is object, x is primtitive;
+ */
+
+//CHECK#1
+if (({valueOf: function() {return 1}} != true) !== false) {
+ $ERROR('#1: ({valueOf: function() {return 1}} != true) === false');
+}
+
+//CHECK#2
+if (({valueOf: function() {return 1}, toString: function() {return 0}} != 1) !== false) {
+ $ERROR('#2: ({valueOf: function() {return 1}, toString: function() {return 0}} != 1) === false');
+}
+
+//CHECK#3
+if (({valueOf: function() {return 1}, toString: function() {return {}}} != "+1") !== false) {
+ $ERROR('#3: ({valueOf: function() {return 1}, toString: function() {return {}}} != "+1") === false');
+}
+
+//CHECK#4
+try {
+ if (({valueOf: function() {return "+1"}, toString: function() {throw "error"}} != true) !== false) {
+ $ERROR('#4.1: ({valueOf: function() {return "+1"}, toString: function() {throw "error"}} != true) === false');
+ }
+}
+catch (e) {
+ if (e === "error") {
+ $ERROR('#4.2: ({valueOf: function() {return "+1"}, toString: function() {throw "error"}} != true) not throw "error"');
+ } else {
+ $ERROR('#4.3: ({valueOf: function() {return "+1"}, toString: function() {throw "error"}} != true) not throw Error. Actual: ' + (e));
+ }
+}
+
+//CHECK#5
+if (({toString: function() {return "+1"}} != 1) !== false) {
+ $ERROR('#5: ({toString: function() {return "+1"}} != 1) === false');
+}
+
+//CHECK#6
+if (({valueOf: function() {return {}}, toString: function() {return "+1"}} != "1") !== true) {
+ $ERROR('#6.1: ({valueOf: function() {return {}}, toString: function() {return "+1"}} != "1") === true');
+} else {
+ if (({valueOf: function() {return {}}, toString: function() {return "+1"}} != "+1") !== false) {
+ $ERROR('#6.2: ({valueOf: function() {return {}}, toString: function() {return "+1"}} != "+1") === false');
+ }
+}
+
+//CHECK#7
+try {
+ ({valueOf: function() {throw "error"}, toString: function() {return 1}} != 1);
+ $ERROR('#7.1: ({valueOf: function() {throw "error"}, toString: function() {return 1}} != 1) throw "error". Actual: ' + (({valueOf: function() {throw "error"}, toString: function() {return 1}} != 1)));
+}
+catch (e) {
+ if (e !== "error") {
+ $ERROR('#7.2: ({valueOf: function() {throw "error"}, toString: function() {return 1}} != 1) throw "error". Actual: ' + (e));
+ }
+}
+
+//CHECK#8
+try {
+ ({valueOf: function() {return {}}, toString: function() {return {}}} != 1);
+ $ERROR('#8.1: ({valueOf: function() {return {}}, toString: function() {return {}}} != 1) throw TypeError. Actual: ' + (({valueOf: function() {return {}}, toString: function() {return {}}} != 1)));
+}
+catch (e) {
+ if ((e instanceof TypeError) !== true) {
+ $ERROR('#8.2: ({valueOf: function() {return {}}, toString: function() {return {}}} != 1) throw TypeError. Actual: ' + (e));
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A1.js
new file mode 100644
index 000000000..67fb026a8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A1;
+ * @section: 11.9.4, 7.2, 7.3;
+ * @assertion: White Space and Line Terminator between EqualityExpression and "===" or between "===" and RelationalExpression are allowed;
+ * @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (!(eval("1\u0009===\u00091"))) {
+ $ERROR('#1: 1\\u0009===\\u00091');
+}
+
+//CHECK#2
+if (!(eval("1\u000B===\u000B1"))) {
+ $ERROR('#2: 1\\u000B===\\u000B1');
+}
+
+//CHECK#3
+if (!(eval("1\u000C===\u000C1"))) {
+ $ERROR('#3: 1\\u000C===\\u000C1');
+}
+
+//CHECK#4
+if (!(eval("1\u0020===\u00201"))) {
+ $ERROR('#4: 1\\u0020===\\u00201');
+}
+
+//CHECK#5
+if (!(eval("1\u00A0===\u00A01"))) {
+ $ERROR('#5: 1\\u00A0===\\u00A01');
+}
+
+//CHECK#6
+if (!(eval("1\u000A===\u000A1"))) {
+ $ERROR('#6: 1\\u000A===\\u000A1');
+}
+
+//CHECK#7
+if (!(eval("1\u000D===\u000D1"))) {
+ $ERROR('#7: 1\\u000D===\\u000D1');
+}
+
+//CHECK#8
+if (!(eval("1\u2028===\u20281"))) {
+ $ERROR('#8: 1\\u2028===\\u20281');
+}
+
+//CHECK#9
+if (!(eval("1\u2029===\u20291"))) {
+ $ERROR('#9: 1\\u2029===\\u20291');
+}
+
+//CHECK#10
+if (!(eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029===\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291"))) {
+ $ERROR('#10: 1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029===\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T1.js
new file mode 100644
index 000000000..2c5a6d258
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A2.1_T1;
+ * @section: 11.9.4;
+ * @assertion: Operator x === y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (!(1 === 1)) {
+ $ERROR('#1: 1 === 1');
+}
+
+//CHECK#2
+var x = 1;
+if (!(x === 1)) {
+ $ERROR('#2: var x = 1; x === 1');
+}
+
+//CHECK#3
+var y = 1;
+if (!(1 === y)) {
+ $ERROR('#3: var y = 1; 1 === y');
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if (!(x === y)) {
+ $ERROR('#4: var x = 1; var y = 1; x === y');
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if (!(objectx.prop === objecty.prop)) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; objectx.prop === objecty.prop');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T2.js
new file mode 100644
index 000000000..4f134f56b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A2.1_T2;
+ * @section: 11.9.4;
+ * @assertion: Operator x === y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x === 1;
+ $ERROR('#1.1: x === 1 throw ReferenceError. Actual: ' + (x === 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x === 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T3.js
new file mode 100644
index 000000000..143989d2f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A2.1_T3;
+ * @section: 11.9.4;
+ * @assertion: Operator x === y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 === y;
+ $ERROR('#1.1: 1 === y throw ReferenceError. Actual: ' + (1 === y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 === y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T1.js
new file mode 100644
index 000000000..aecbd9e18
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A2.4_T1;
+ * @section: 11.9.4;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if (!((x = 1) === x)) {
+ $ERROR('#1: var x = 0; (x = 1) === x');
+}
+
+//CHECK#2
+var x = 0;
+if (x === (x = 1)) {
+ $ERROR('#2: var x = 0; x !== (x = 1)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T2.js
new file mode 100644
index 000000000..cc7ffabf2
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A2.4_T2;
+ * @section: 11.9.4;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() === y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() === y() throw "x". Actual: ' + (x() === y()));
+} catch (e) {
+ if (e === "y") {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (!(e === "x")) {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() === y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T3.js
new file mode 100644
index 000000000..106fa5bcb
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A2.4_T3;
+ * @section: 11.9.4;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x === (x = 1);
+ $ERROR('#1.1: x === (x = 1) throw ReferenceError. Actual: ' + (x === (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x === (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if (!((y = 1) === y)) {
+ $ERROR('#2: (y = 1) === y');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A3.js
new file mode 100644
index 000000000..eae3e555d
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A3;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: Type(x) and Type(y) are Boolean-s.
+ * Return true, if x and y are both true and both false; otherwise, return false;
+ * @description: x and y are primitive booleans;
+ */
+
+//CHECK#1
+if (!(true === true)) {
+ $ERROR('#1: true === true');
+}
+
+//CHECK#2
+if (!(false === false)) {
+ $ERROR('#2: false === false');
+}
+
+//CHECK#3
+if (true === false) {
+ $ERROR('#3: true !== false');
+}
+
+//CHECK#4
+if (false === true) {
+ $ERROR('#4: false !== true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.1_T1.js
new file mode 100644
index 000000000..191771ee1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.1_T1.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A4.1_T1;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: If x or y is NaN, return false;
+ * @description: x is NaN;
+*/
+
+//CHECK#1
+if (Number.NaN === true) {
+ $ERROR('#1: NaN !== true');
+}
+
+//CHECK#2
+if (Number.NaN === 1) {
+ $ERROR('#2: NaN !== 1');
+}
+
+//CHECK#3
+if (Number.NaN === Number.NaN) {
+ $ERROR('#3: NaN !== NaN');
+}
+
+//CHECK#4
+if (Number.NaN === Number.POSITIVE_INFINITY) {
+ $ERROR('#4: NaN !== +Infinity');
+}
+
+//CHECK#5
+if (Number.NaN === Number.NEGATIVE_INFINITY) {
+ $ERROR('#5: NaN !== -Infinity');
+}
+
+//CHECK#6
+if (Number.NaN === Number.MAX_VALUE) {
+ $ERROR('#6: NaN !== Number.MAX_VALUE');
+}
+
+//CHECK#7
+if (Number.NaN === Number.MIN_VALUE) {
+ $ERROR('#7: NaN !== Number.MIN_VALUE');
+}
+
+//CHECK#8
+if (Number.NaN === "string") {
+ $ERROR('#8: NaN !== "string"');
+}
+
+//CHECK#9
+if (Number.NaN === new Object()) {
+ $ERROR('#9: NaN !== new Object()');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.1_T2.js
new file mode 100644
index 000000000..b0d8358c8
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.1_T2.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A4.1_T2;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: If x or y is NaN, return false;
+ * @description: y is NaN;
+*/
+
+//CHECK#1
+if (true === Number.NaN) {
+ $ERROR('#1: true !== NaN');
+}
+
+//CHECK#2
+if (-1 === Number.NaN) {
+ $ERROR('#2: -1 !== NaN');
+}
+
+//CHECK#3
+if (Number.NaN === Number.NaN) {
+ $ERROR('#3: NaN !== NaN');
+}
+
+//CHECK#4
+if (Number.POSITIVE_INFINITY === Number.NaN) {
+ $ERROR('#4: +Infinity !== NaN');
+}
+
+//CHECK#5
+if (Number.NEGATIVE_INFINITY === Number.NaN) {
+ $ERROR('#5: -Infinity !== NaN');
+}
+
+//CHECK#6
+if (Number.MAX_VALUE === Number.NaN) {
+ $ERROR('#6: Number.MAX_VALUE !== NaN');
+}
+
+//CHECK#7
+if (Number.MIN_VALUE === Number.NaN) {
+ $ERROR('#7: Number.MIN_VALUE !== NaN');
+}
+
+//CHECK#8
+if ("string" === Number.NaN) {
+ $ERROR('#8: "string" !== NaN');
+}
+
+//CHECK#9
+if (new Object() === Number.NaN) {
+ $ERROR('#9: new Object() !== NaN');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.2.js
new file mode 100644
index 000000000..d9c5a3c7b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A4.2;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: If x is +0(-0) and y is -0(+0), return true;
+ * @description: Checking all combinations;
+*/
+
+//CHECK#1
+if (!(+0 === -0)) {
+ $ERROR('#1: +0 === -0');
+}
+
+//CHECK#2
+if (!(-0 === +0)) {
+ $ERROR('#2: -0 === +0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.3.js
new file mode 100644
index 000000000..f3cec65bc
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A4.3.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A4.3;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: Type(x) and Type(y) are Number-s minus NaN, +0, -0.
+ * Return true, if x is the same number value as y; otherwise, return false;
+ * @description: x and y are primitive numbers;
+*/
+
+//CHECK#1
+if (!(Number.POSITIVE_INFINITY === Number.POSITIVE_INFINITY)) {
+ $ERROR('#1: +Infinity === +Infinity');
+}
+
+//CHECK#2
+if (!(Number.NEGATIVE_INFINITY === Number.NEGATIVE_INFINITY)) {
+ $ERROR('#2: -Infinity === -Infinity');
+}
+
+//CHECK#3
+if (!(13 === 13)) {
+ $ERROR('#3: 13 === 13');
+}
+
+//CHECK#4
+if (!(-13 === -13)) {
+ $ERROR('#4: -13 === -13');
+}
+
+//CHECK#5
+if (!(1.3 === 1.3)) {
+ $ERROR('#5: 1.3 === 1.3');
+}
+
+//CHECK#6
+if (!(-1.3 === -1.3)) {
+ $ERROR('#6: -1.3 === -1.3');
+}
+
+//CHECK#7
+if (!(Number.POSITIVE_INFINITY === -Number.NEGATIVE_INFINITY)) {
+ $ERROR('#7: +Infinity === -(-Infinity)');
+}
+
+//CHECK#8
+if (1 === 0.999999999999) {
+ $ERROR('#8: 1 !== 0.999999999999');
+}
+
+//CHECK#9
+if (!(1.0 === 1)) {
+ $ERROR('#9: 1.0 === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A5.js
new file mode 100644
index 000000000..77ea8f4ef
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A5.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A5;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: Type(x) and Type(y) are String-s.
+ * Return true, if x and y are exactly the same sequence of characters; otherwise, return false;
+ * @description: x and y are primitive strings;
+ */
+
+//CHECK#1
+if (!("" === "")) {
+ $ERROR('#1: "" === ""');
+}
+
+//CHECK#2
+if (!(" " === " ")) {
+ $ERROR('#2: " " === " "');
+}
+
+//CHECK#3
+if (!("string" === "string")) {
+ $ERROR('#3: "string" === "string"');
+}
+
+//CHECK#4
+if (" string" === "string ") {
+ $ERROR('#4: " string" !== "string "');
+}
+
+//CHECK#5
+if ("1.0" === "1") {
+ $ERROR('#5: "1.0" !== "1"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A6.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A6.1.js
new file mode 100644
index 000000000..46aed6b96
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A6.1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A6.1;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: If Type(x) and Type(y) are Undefined-s, return true;
+ * @description: void 0, eval("var x") is undefined;
+*/
+
+//CHECK#1
+if (!(undefined === undefined)) {
+ $ERROR('#1: undefined === undefined');
+}
+
+//CHECK#2
+if (!(void 0 === undefined)) {
+ $ERROR('#2: void 0 === undefined');
+}
+
+//CHECK#3
+if (!(undefined === eval("var x"))) {
+ $ERROR('#3: undefined === eval("var x")');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A6.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A6.2.js
new file mode 100644
index 000000000..c08658e89
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A6.2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A6.2;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: If Type(x) and Type(y) are Null-s, return true;
+ * @description: null === null;
+*/
+
+//CHECK#1
+if (!(null === null)) {
+ $ERROR('#1: null === null');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A7.js
new file mode 100644
index 000000000..6414908d1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A7.js
@@ -0,0 +1,52 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A7;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: Type(x) and Type(y) are Object-s.
+ * Return true, if x and y are references to the same Object; otherwise, return false;
+ * @description: Checking Boolean object, Number object, String object, Object object;
+ */
+
+//CHECK#1
+if (new Object() === new Object()) {
+ $ERROR('#1: new Object() !== new Object()');
+}
+
+//CHECK#2
+if (new Object(true) === new Object(true)) {
+ $ERROR('#2: new Object() !== new Object()');
+}
+
+//CHECK#3
+if (new Object(false) === new Object(false)) {
+ $ERROR('#3: new Object() !== new Object()');
+}
+
+//CHECK#4
+if (new Object(+0) === new Object(-0)) {
+ $ERROR('#4: new Object(+0) !== new Object(-0)');
+}
+
+//CHECK#5
+x = {};
+y = x;
+if (!(x === y)) {
+ $ERROR('#5: x = {}; y = x; x === y');
+}
+
+//CHECK#6
+if (new Boolean(true) === new Number(1)) {
+ $ERROR('#6 new Boolean(true) === new Number(1)');
+}
+
+//CHECK#7
+if (new Number(1) === new String("1")) {
+ $ERROR('#7: new Number(1) === new String("1")');
+}
+
+//CHECK#8
+if (new String("1") === new Boolean(true)) {
+ $ERROR('#8: new String("x") === new Boolean(true)');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T1.js
new file mode 100644
index 000000000..480009b30
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T1.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A8_T1;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: If Type(x) is different from Type(y), return false;
+ * @description: x or y is primitive boolean;
+*/
+
+//CHECK#1
+if (true === new Boolean(true)) {
+ $ERROR('#1: true !== new Number(true)');
+}
+
+//CHECK#2
+if (true === 1) {
+ $ERROR('#2: true !== 1');
+}
+
+//CHECK#3
+if (true === new Number(true)) {
+ $ERROR('#3: true !== new Number(true)');
+}
+
+//CHECK#4
+if (true === "1") {
+ $ERROR('#4: true !== "1"');
+}
+
+//CHECK#5
+if (true === new String(true)) {
+ $ERROR('#5: true !== new String(true)');
+}
+
+//CHECK#6
+if (new Boolean(false) === false) {
+ $ERROR('#6: new Number(false) !== false');
+}
+
+//CHECK#7
+if (0 === false) {
+ $ERROR('#7: 0 !== false');
+}
+
+//CHECK#8
+if (new Number(false) === false) {
+ $ERROR('#8: new Number(false) !== false');
+}
+
+//CHECK#9
+if ("0" === false) {
+ $ERROR('#9: "0" !== false');
+}
+
+//CHECK#10
+if (false === new String(false)) {
+ $ERROR('#10: false !== new String(false)');
+}
+
+//CHECK#11
+if (true === {valueOf: function () {return true}}) {
+ $ERROR('#11: true === {valueOf: function () {return true}}');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T2.js
new file mode 100644
index 000000000..bce65a4dd
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T2.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A8_T2;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: If Type(x) is different from Type(y), return false;
+ * @description: x or y is primitive number;
+*/
+
+//CHECK#1
+if (1 === new Number(1)) {
+ $ERROR('#1: 1 !== new Number(1)');
+}
+
+//CHECK#2
+if (1 === true) {
+ $ERROR('#2: 1 !== true');
+}
+
+//CHECK#3
+if (1 === new Boolean(1)) {
+ $ERROR('#3: 1 !== new Boolean(1)');
+}
+
+//CHECK#4
+if (1 === "1") {
+ $ERROR('#4: 1 !== "1"');
+}
+
+//CHECK#5
+if (1 === new String(1)) {
+ $ERROR('#5: 1 !== new String(1)');
+}
+
+//CHECK#6
+if (new Number(0) === 0) {
+ $ERROR('#6: new Number(0) !== 0');
+}
+
+//CHECK#7
+if (false === 0) {
+ $ERROR('#7: false !== 0');
+}
+
+//CHECK#8
+if (new Boolean(0) === 0) {
+ $ERROR('#8: new Boolean(0) !== 0');
+}
+
+//CHECK#9
+if ("0" === 0) {
+ $ERROR('#9: "0" !== 0');
+}
+
+//CHECK#10
+if (new String(0) === 0) {
+ $ERROR('#10: new String(0) !== 0');
+}
+
+//CHECK#11
+if (1 === {valueOf: function () {return 1}}) {
+ $ERROR('#11: 1 === {valueOf: function () {return 1}}');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T3.js
new file mode 100644
index 000000000..f9447ec9a
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T3.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A8_T3;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: If Type(x) is different from Type(y), return false;
+ * @description: x or y is primitive string;
+*/
+
+//CHECK#1
+if ("1" === new String("1")) {
+ $ERROR('#1: "1" !== new String("1")');
+}
+
+//CHECK#2
+if ("1" === true) {
+ $ERROR('#2: "1" !== true');
+}
+
+//CHECK#3
+if ("1" === new Boolean("1")) {
+ $ERROR('#3: "1" !== new Boolean("1")');
+}
+
+//CHECK#4
+if ("1" === 1) {
+ $ERROR('#4: "1" === 1');
+}
+
+//CHECK#5
+if ("1" === new Number("1")) {
+ $ERROR('#5: "1" === new Number("1")');
+}
+
+//CHECK#6
+if (new String(false) === false) {
+ $ERROR('#6: new Number(false) !== false');
+}
+
+//CHECK#7
+if (false === "0") {
+ $ERROR('#7: false !== "0"');
+}
+
+//CHECK#8
+if ("0" === new Boolean("0")) {
+ $ERROR('#8: "0" !== new Boolean("0")');
+}
+
+//CHECK#9
+if (false === 0) {
+ $ERROR('#9: false !== 0');
+}
+
+//CHECK#10
+if (false === new Number(false)) {
+ $ERROR('#10: false !== new Number(false)');
+}
+
+//CHECK#11
+if ("1" === {valueOf: function () {return "1"}}) {
+ $ERROR('#11: "1" === {valueOf: function () {return "1"}}');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T4.js
new file mode 100644
index 000000000..66800f24c
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T4.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A8_T4;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: If Type(x) is different from Type(y), return false;
+ * @description: x or y is null or undefined;
+*/
+
+//CHECK#1
+if (undefined === null) {
+ $ERROR('#1: undefined !== null');
+}
+
+//CHECK#2
+if (null === undefined) {
+ $ERROR('#2: null !== undefined');
+}
+
+//CHECK#3
+if (null === 0) {
+ $ERROR('#3: null !== 0');
+}
+
+//CHECK#4
+if (0 === null) {
+ $ERROR('#4: 0 !== null');
+}
+
+//CHECK#5
+if (null === false) {
+ $ERROR('#5: null !== false');
+}
+
+//CHECK#6
+if (false === null) {
+ $ERROR('#6: false !== null');
+}
+
+//CHECK#7
+if (undefined === false) {
+ $ERROR('#7: undefined !== false');
+}
+
+//CHECK#8
+if (false === undefined) {
+ $ERROR('#8: false !== undefined');
+}
+
+//CHECK#9
+if (null === new Object()) {
+ $ERROR('#9: null !== new Object()');
+}
+
+//CHECK#10
+if (new Object() === null) {
+ $ERROR('#10: new Object() !== null');
+}
+
+//CHECK#11
+if (null === "null") {
+ $ERROR('#11: null !== "null"');
+}
+
+//CHECK#12
+if ("null" === null) {
+ $ERROR('#12: "null" !== null');
+}
+
+//CHECK#13
+if (undefined === "undefined") {
+ $ERROR('#13: undefined !== "undefined"');
+}
+
+//CHECK#14
+if ("undefined" === undefined) {
+ $ERROR('#14: "undefined" !== undefined');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T5.js
new file mode 100644
index 000000000..ef3e8bbd1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.4_The_Strict_Equals_Operator/S11.9.4_A8_T5.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.4_A8_T5;
+ * @section: 11.9.4, 11.9.6;
+ * @assertion: If Type(x) is different from Type(y), return false;
+ * @description: Checking with such x and y that either x or y is primitive string and the other is primitive number;
+*/
+
+//CHECK#1
+try {
+ throw 1;
+} catch(e) {
+ if (e === "1") {
+ $ERROR('#1: throw 1 !== "1"');
+ }
+}
+
+//CHECK#2
+try {
+ throw "1";
+} catch(e) {
+ if (1 === e) {
+ $ERROR('#2: 1 !== throw "1"');
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A1.js
new file mode 100644
index 000000000..b0997e8da
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A1.js
@@ -0,0 +1,59 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+* @name: S11.9.5_A1;
+* @section: 11.9.5, 7.2, 7.3;
+* @assertion: White Space and Line Terminator between EqualityExpression and "!==" or between "!==" and RelationalExpression are allowed;
+* @description: Checking by using eval;
+*/
+
+//CHECK#1
+if (eval("1\u0009!==\u00091")) {
+ $ERROR('#1: 1\\u0009!==\\u00091');
+}
+
+//CHECK#2
+if (eval("1\u000B!==\u000B1")) {
+ $ERROR('#2: 1\\u000B!==\\u000B1');
+}
+
+//CHECK#3
+if (eval("1\u000C!==\u000C1")) {
+ $ERROR('#3: 1\\u000C!==\\u000C1');
+}
+
+//CHECK#4
+if (eval("1\u0020!==\u00201")) {
+ $ERROR('#4: 1\\u0020!==\\u00201');
+}
+
+//CHECK#5
+if (eval("1\u00A0!==\u00A01")) {
+ $ERROR('#5: 1\\u00A0!==\\u00A01');
+}
+
+//CHECK#6
+if (eval("1\u000A!==\u000A1")) {
+ $ERROR('#6: 1\\u000A!==\\u000A1');
+}
+
+//CHECK#7
+if (eval("1\u000D!==\u000D1")) {
+ $ERROR('#7: 1\\u000D!==\\u000D1');
+}
+
+//CHECK#8
+if (eval("1\u2028!==\u20281")) {
+ $ERROR('#8: 1\\u2028!==\\u20281');
+}
+
+//CHECK#9
+if (eval("1\u2029!==\u20291")) {
+ $ERROR('#9: 1\\u2029!==\\u20291');
+}
+
+//CHECK#10
+if (eval("1\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u2029!==\u0009\u000B\u000C\u0020\u00A0\u000A\u000D\u2028\u20291")) {
+ $ERROR('#10: 1\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u2029!==\\u0009\\u000B\\u000C\\u0020\\u00A0\\u000A\\u000D\\u2028\\u20291');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T1.js
new file mode 100644
index 000000000..f815bfaf5
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T1.js
@@ -0,0 +1,43 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A2.1_T1;
+ * @section: 11.9.5;
+ * @assertion: Operator x !== y uses GetValue;
+ * @description: Either Type is not Reference or GetBase is not null;
+*/
+
+//CHECK#1
+if (1 !== 1) {
+ $ERROR('#1: 1 === 1');
+}
+
+//CHECK#2
+var x = 1;
+if (x !== 1) {
+ $ERROR('#2: var x = 1; x === 1');
+}
+
+//CHECK#3
+var y = 1;
+if (1 !== y) {
+ $ERROR('#3: var y = 1; 1 === y');
+}
+
+//CHECK#4
+var x = 1;
+var y = 1;
+if (x !== y) {
+ $ERROR('#4: var x = 1; var y = 1; x === y');
+}
+
+//CHECK#5
+var objectx = new Object();
+var objecty = new Object();
+objectx.prop = 1;
+objecty.prop = 1;
+if (objectx.prop !== objecty.prop) {
+ $ERROR('#5: var objectx = new Object(); var objecty = new Object(); objectx.prop = 1; objecty.prop = 1; objectx.prop === objecty.prop');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T2.js
new file mode 100644
index 000000000..050585621
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A2.1_T2;
+ * @section: 11.9.5;
+ * @assertion: Operator x !== y uses GetValue;
+ * @description: If GetBase(x) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ x !== 1;
+ $ERROR('#1.1: x !== 1 throw ReferenceError. Actual: ' + (x !== 1));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x !== 1 throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T3.js
new file mode 100644
index 000000000..25f372a9f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.1_T3.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A2.1_T3;
+ * @section: 11.9.5;
+ * @assertion: Operator x !== y uses GetValue;
+ * @description: If GetBase(y) is null, throw ReferenceError;
+*/
+
+//CHECK#1
+try {
+ 1 !== y;
+ $ERROR('#1.1: 1 !== y throw ReferenceError. Actual: ' + (1 !== y));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: 1 !== y throw ReferenceError. Actual: ' + (e));
+ }
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T1.js
new file mode 100644
index 000000000..6e54ab64b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T1.js
@@ -0,0 +1,22 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A2.4_T1;
+ * @section: 11.9.5;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "=";
+*/
+
+//CHECK#1
+var x = 0;
+if ((x = 1) !== x) {
+ $ERROR('#1: var x = 0; (x = 1) === x');
+}
+
+//CHECK#2
+var x = 0;
+if (!(x !== (x = 1))) {
+ $ERROR('#2: var x = 0; x !== (x = 1)');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T2.js
new file mode 100644
index 000000000..cd6055d65
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T2.js
@@ -0,0 +1,25 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A2.4_T2;
+ * @section: 11.9.5;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking with "throw";
+*/
+
+//CHECK#1
+var x = function () { throw "x"; };
+var y = function () { throw "y"; };
+try {
+ x() !== y();
+ $ERROR('#1.1: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() !== y() throw "x". Actual: ' + (x() !== y()));
+} catch (e) {
+ if (!(e !== "y")) {
+ $ERROR('#1.2: First expression is evaluated first, and then second expression');
+ } else {
+ if (e !== "x") {
+ $ERROR('#1.3: var x = function () { throw "x"; }; var y = function () { throw "y"; }; x() !== y() throw "x". Actual: ' + (e));
+ }
+ }
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T3.js
new file mode 100644
index 000000000..18492f179
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A2.4_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A2.4_T3;
+ * @section: 11.9.5;
+ * @assertion: First expression is evaluated first, and then second expression;
+ * @description: Checking undeclarated variables;
+*/
+
+//CHECK#1
+try {
+ x !== (x = 1);
+ $ERROR('#1.1: x !== (x = 1) throw ReferenceError. Actual: ' + (x !== (x = 1)));
+}
+catch (e) {
+ if ((e instanceof ReferenceError) !== true) {
+ $ERROR('#1.2: x !== (x = 1) throw ReferenceError. Actual: ' + (e));
+ }
+}
+
+//CHECK#2
+if ((y = 1) !== y) {
+ $ERROR('#2: (y = 1) === y');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A3.js
new file mode 100644
index 000000000..fca518099
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A3.js
@@ -0,0 +1,30 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A3;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: Type(x) and Type(y) are Boolean-s.
+ * Return false, if x and y are both true or both false; otherwise, return true;
+ * @description: x and y are primitive booleans;
+ */
+
+//CHECK#1
+if (true !== true) {
+ $ERROR('#1: true === true');
+}
+
+//CHECK#2
+if (false !== false) {
+ $ERROR('#2: false === false');
+}
+
+//CHECK#3
+if (!(true !== false)) {
+ $ERROR('#3: true !== false');
+}
+
+//CHECK#4
+if (!(false !== true)) {
+ $ERROR('#4: false !== true');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.1_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.1_T1.js
new file mode 100644
index 000000000..c6d2f70d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.1_T1.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A4.1_T1;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: If x or y is NaN, return true;
+ * @description: x is NaN;
+*/
+
+//CHECK#1
+if (!(Number.NaN !== true)) {
+ $ERROR('#1: NaN !== true');
+}
+
+//CHECK#2
+if (!(Number.NaN !== 1)) {
+ $ERROR('#2: NaN !== 1');
+}
+
+//CHECK#3
+if (!(Number.NaN !== Number.NaN)) {
+ $ERROR('#3: NaN !== NaN');
+}
+
+//CHECK#4
+if (!(Number.NaN !== Number.POSITIVE_INFINITY)) {
+ $ERROR('#4: NaN !== +Infinity');
+}
+
+//CHECK#5
+if (!(Number.NaN !== Number.NEGATIVE_INFINITY)) {
+ $ERROR('#5: NaN !== -Infinity');
+}
+
+//CHECK#6
+if (!(Number.NaN !== Number.MAX_VALUE)) {
+ $ERROR('#6: NaN !== Number.MAX_VALUE');
+}
+
+//CHECK#7
+if (!(Number.NaN !== Number.MIN_VALUE)) {
+ $ERROR('#7: NaN !== Number.MIN_VALUE');
+}
+
+//CHECK#8
+if (!(Number.NaN !== "string")) {
+ $ERROR('#8: NaN !== "string"');
+}
+
+//CHECK#9
+if (!(Number.NaN !== new Object())) {
+ $ERROR('#9: NaN !== new Object()');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.1_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.1_T2.js
new file mode 100644
index 000000000..1917a9a32
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.1_T2.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A4.1_T2;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: If x or y is NaN, return true;
+ * @description: y is NaN;
+*/
+
+//CHECK#1
+if (!(true !== Number.NaN)) {
+ $ERROR('#1: true !== NaN');
+}
+
+//CHECK#2
+if (!(-1 !== Number.NaN)) {
+ $ERROR('#2: -1 !== NaN');
+}
+
+//CHECK#3
+if (!(Number.NaN !== Number.NaN)) {
+ $ERROR('#3: NaN !== NaN');
+}
+
+//CHECK#4
+if (!(Number.POSITIVE_INFINITY !== Number.NaN)) {
+ $ERROR('#4: +Infinity !== NaN');
+}
+
+//CHECK#5
+if (!(Number.NEGATIVE_INFINITY !== Number.NaN)) {
+ $ERROR('#5: -Infinity !== NaN');
+}
+
+//CHECK#6
+if (!(Number.MAX_VALUE !== Number.NaN)) {
+ $ERROR('#6: Number.MAX_VALUE !== NaN');
+}
+
+//CHECK#7
+if (!(Number.MIN_VALUE !== Number.NaN)) {
+ $ERROR('#7: Number.MIN_VALUE !== NaN');
+}
+
+//CHECK#8
+if (!("string" !== Number.NaN)) {
+ $ERROR('#8: "string" !== NaN');
+}
+
+//CHECK#9
+if (!(new Object() !== Number.NaN)) {
+ $ERROR('#9: new Object() !== NaN');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.2.js
new file mode 100644
index 000000000..ff0b4ef47
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.2.js
@@ -0,0 +1,19 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A4.2;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: If x is +0(-0) and y is -0(+0), return false;
+ * @description: Checking all combinations;
+*/
+
+//CHECK#1
+if (+0 !== -0) {
+ $ERROR('#1: +0 === -0');
+}
+
+//CHECK#2
+if (-0 !== +0) {
+ $ERROR('#2: -0 === +0');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.3.js
new file mode 100644
index 000000000..8d98f1d1b
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A4.3.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A4.3;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: Type(x) and Type(y) are Number-s minus NaN, +0, -0.
+ * Return false, if x is the same number value as y; otherwise, return true;
+ * @description: x and y are primitive numbers;
+*/
+
+//CHECK#1
+if (Number.POSITIVE_INFINITY !== Number.POSITIVE_INFINITY) {
+ $ERROR('#1: +Infinity === +Infinity');
+}
+
+//CHECK#2
+if (Number.NEGATIVE_INFINITY !== Number.NEGATIVE_INFINITY) {
+ $ERROR('#2: -Infinity === -Infinity');
+}
+
+//CHECK#3
+if (13 !== 13) {
+ $ERROR('#3: 13 === 13');
+}
+
+//CHECK#4
+if (-13 !== -13) {
+ $ERROR('#4: -13 === -13');
+}
+
+//CHECK#5
+if (1.3 !== 1.3) {
+ $ERROR('#5: 1.3 === 1.3');
+}
+
+//CHECK#6
+if (-1.3 !== -1.3) {
+ $ERROR('#6: -1.3 === -1.3');
+}
+
+//CHECK#7
+if (Number.POSITIVE_INFINITY !== -Number.NEGATIVE_INFINITY) {
+ $ERROR('#7: +Infinity === -(-Infinity)');
+}
+
+//CHECK#8
+if (!(1 !== 0.999999999999)) {
+ $ERROR('#8: 1 !== 0.999999999999');
+}
+
+//CHECK#9
+if (1.0 !== 1) {
+ $ERROR('#9: 1.0 === 1');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A5.js
new file mode 100644
index 000000000..d042e90d1
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A5.js
@@ -0,0 +1,35 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A5;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: Type(x) and Type(y) are String-s.
+ * Return false, if x and y are exactly the same sequence of characters; otherwise, return true;
+ * @description: x and y are primitive strings;
+ */
+
+//CHECK#1
+if ("" !== "") {
+ $ERROR('#1: "" === ""');
+}
+
+//CHECK#2
+if (" " !== " ") {
+ $ERROR('#2: " " === " "');
+}
+
+//CHECK#3
+if ("string" !== "string") {
+ $ERROR('#3: "string" === "string"');
+}
+
+//CHECK#4
+if (!(" string" !== "string ")) {
+ $ERROR('#4: " string" !== "string "');
+}
+
+//CHECK#5
+if (!("1.0" !== "1")) {
+ $ERROR('#5: "1.0" !== "1"');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A6.1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A6.1.js
new file mode 100644
index 000000000..8785131cf
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A6.1.js
@@ -0,0 +1,24 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A6.1;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: If Type(x) and Type(y) are Undefined-s, return false;
+ * @description: void 0, eval("var x") is undefined;
+*/
+
+//CHECK#1
+if (undefined !== undefined) {
+ $ERROR('#1: undefined === undefined');
+}
+
+//CHECK#2
+if (void 0 !== undefined) {
+ $ERROR('#2: void 0 === undefined');
+}
+
+//CHECK#3
+if (undefined !== eval("var x")) {
+ $ERROR('#3: undefined === eval("var x")');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A6.2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A6.2.js
new file mode 100644
index 000000000..407d49339
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A6.2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A6.2;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: If Type(x) and Type(y) are Null-s, return false;
+ * @description: null === null;
+*/
+
+//CHECK#1
+if (null !== null) {
+ $ERROR('#1: null === null');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A7.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A7.js
new file mode 100644
index 000000000..f31dfd011
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A7.js
@@ -0,0 +1,54 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A7;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: Type(x) and Type(y) are Object-s.
+ * Return false, if x and y are references to the same Object; otherwise, return true;
+ * @description: Checking Boolean object, Number object, String object, Object object;
+ */
+
+//CHECK#1
+if (!(new Object() !== new Object())) {
+ $ERROR('#1: new Object() !== new Object()');
+}
+
+//CHECK#2
+if (!(new Object(true) !== new Object(true))) {
+ $ERROR('#2: new Object() !== new Object()');
+}
+
+//CHECK#3
+if (!(new Object(false) !== new Object(false))) {
+ $ERROR('#3: new Object() !== new Object()');
+}
+
+//CHECK#4
+if (!(new Object(+0) !== new Object(-0))) {
+ $ERROR('#4: new Object(+0) !== new Object(-0)');
+}
+
+//CHECK#5
+x = {};
+y = x;
+if (x !== y) {
+ $ERROR('#5: x = {}; y = x; x === y');
+}
+
+//CHECK#6
+if (!(new Boolean(true) !== new Number(1))) {
+ $ERROR('#6 new Boolean(true) !== new Number(1)');
+}
+
+//CHECK#7
+if (!(new Number(1) !== new String("1"))) {
+ $ERROR('#7: new Number(1) !== new String("1")');
+}
+
+//CHECK#8
+if (!(new String("1") !== new Boolean(true))) {
+ $ERROR('#8: new String("x") !== new Boolean(true)');
+}
+
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T1.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T1.js
new file mode 100644
index 000000000..0374f3aad
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T1.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A8_T1;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: If Type(x) is different from Type(y), return true;
+ * @description: x or y is primitive boolean;
+*/
+
+//CHECK#1
+if (!(true !== new Boolean(true))) {
+ $ERROR('#1: true !== new Number(true)');
+}
+
+//CHECK#2
+if (!(true !== 1)) {
+ $ERROR('#2: true !== 1');
+}
+
+//CHECK#3
+if (!(true !== new Number(true))) {
+ $ERROR('#3: true !== new Number(true)');
+}
+
+//CHECK#4
+if (!(true !== "1")) {
+ $ERROR('#4: true !== "1"');
+}
+
+//CHECK#5
+if (!(true !== new String(true))) {
+ $ERROR('#5: true !== new String(true)');
+}
+
+//CHECK#6
+if (!(new Boolean(false) !== false)) {
+ $ERROR('#6: new Number(false) !== false');
+}
+
+//CHECK#7
+if (!(0 !== false)) {
+ $ERROR('#7: 0 !== false');
+}
+
+//CHECK#8
+if (!(new Number(false) !== false)) {
+ $ERROR('#8: new Number(false) !== false');
+}
+
+//CHECK#9
+if (!("0" !== false)) {
+ $ERROR('#9: "0" !== false');
+}
+
+//CHECK#10
+if (!(false !== new String(false))) {
+ $ERROR('#10: false !== new String(false)');
+}
+
+//CHECK#11
+if (!(true !== {valueOf: function () {return true}})) {
+ $ERROR('#11: true !== {valueOf: function () {return true}}');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T2.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T2.js
new file mode 100644
index 000000000..4f8d6419f
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T2.js
@@ -0,0 +1,64 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A8_T2;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: If Type(x) is different from Type(y), return true;
+ * @description: x or y is primitive number;
+*/
+
+//CHECK#1
+if (!(1 !== new Number(1))) {
+ $ERROR('#1: 1 !== new Number(1)');
+}
+
+//CHECK#2
+if (!(1 !== true)) {
+ $ERROR('#2: 1 !== true');
+}
+
+//CHECK#3
+if (!(1 !== new Boolean(1))) {
+ $ERROR('#3: 1 !== new Boolean(1)');
+}
+
+//CHECK#4
+if (!(1 !== "1")) {
+ $ERROR('#4: 1 !== "1"');
+}
+
+//CHECK#5
+if (!(1 !== new String(1))) {
+ $ERROR('#5: 1 !== new String(1)');
+}
+
+//CHECK#6
+if (!(new Number(0) !== 0)) {
+ $ERROR('#6: new Number(0) !== 0');
+}
+
+//CHECK#7
+if (!(false !== 0)) {
+ $ERROR('#7: false !== 0');
+}
+
+//CHECK#8
+if (!(new Boolean(0) !== 0)) {
+ $ERROR('#8: new Boolean(0) !== 0');
+}
+
+//CHECK#9
+if (!("0" !== 0)) {
+ $ERROR('#9: "0" !== 0');
+}
+
+//CHECK#10
+if (!(new String(0) !== 0)) {
+ $ERROR('#10: new String(0) !== 0');
+}
+
+//CHECK#11
+if (!(1 !== {valueOf: function () {return 1}})) {
+ $ERROR('#11: 1 !== {valueOf: function () {return 1}}');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T3.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T3.js
new file mode 100644
index 000000000..6f7ba6bf9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T3.js
@@ -0,0 +1,65 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A8_T3;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: If Type(x) is different from Type(y), return true;
+ * @description: x or y is primitive string;
+*/
+
+//CHECK#1
+if (!("1" !== new String("1"))) {
+ $ERROR('#1: "1" !== new String("1")');
+}
+
+//CHECK#2
+if (!("1" !== true)) {
+ $ERROR('#2: "1" !== true');
+}
+
+//CHECK#3
+if (!("1" !== new Boolean("1"))) {
+ $ERROR('#3: "1" !== new Boolean("1")');
+}
+
+//CHECK#4
+if (!("1" !== 1)) {
+ $ERROR('#4: "1" === 1');
+}
+
+//CHECK#5
+if (!("1" !== new Number("1"))) {
+ $ERROR('#5: "1" === new Number("1")');
+}
+
+//CHECK#6
+if (!(new String(false) !== false)) {
+ $ERROR('#6: new Number(false) !== false');
+}
+
+//CHECK#7
+if (!(false !== "0")) {
+ $ERROR('#7: false !== "0"');
+}
+
+//CHECK#8
+if (!("0" !== new Boolean("0"))) {
+ $ERROR('#8: "0" !== new Boolean("0")');
+}
+
+//CHECK#9
+if (!(false !== 0)) {
+ $ERROR('#9: false !== 0');
+}
+
+//CHECK#10
+if (!(false !== new Number(false))) {
+ $ERROR('#10: false !== new Number(false)');
+}
+
+//CHECK#11
+if (!("1" !== {valueOf: function () {return "1"}})) {
+ $ERROR('#11: "1" !== {valueOf: function () {return "1"}}');
+}
+
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T4.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T4.js
new file mode 100644
index 000000000..74c58f83e
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T4.js
@@ -0,0 +1,79 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A8_T4;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: If Type(x) is different from Type(y), return true;
+ * @description: x or y is null or undefined;
+*/
+
+//CHECK#1
+if (!(undefined !== null)) {
+ $ERROR('#1: undefined !== null');
+}
+
+//CHECK#2
+if (!(null !== undefined)) {
+ $ERROR('#2: null !== undefined');
+}
+
+//CHECK#3
+if (!(null !== 0)) {
+ $ERROR('#3: null !== 0');
+}
+
+//CHECK#4
+if (!(0 !== null)) {
+ $ERROR('#4: 0 !== null');
+}
+
+//CHECK#5
+if (!(null !== false)) {
+ $ERROR('#5: null !== false');
+}
+
+//CHECK#6
+if (!(false !== null)) {
+ $ERROR('#6: false !== null');
+}
+
+//CHECK#7
+if (!(undefined !== false)) {
+ $ERROR('#7: undefined !== false');
+}
+
+//CHECK#8
+if (!(false !== undefined)) {
+ $ERROR('#8: false !== undefined');
+}
+
+//CHECK#9
+if (!(null !== new Object())) {
+ $ERROR('#9: null !== new Object()');
+}
+
+//CHECK#10
+if (!(new Object() !== null)) {
+ $ERROR('#10: new Object() !== null');
+}
+
+//CHECK#11
+if (!(null !== "null")) {
+ $ERROR('#11: null !== "null"');
+}
+
+//CHECK#12
+if (!("null" !== null)) {
+ $ERROR('#12: "null" !== null');
+}
+
+//CHECK#13
+if (!(undefined !== "undefined")) {
+ $ERROR('#13: undefined !== "undefined"');
+}
+
+//CHECK#14
+if (!("undefined" !== undefined)) {
+ $ERROR('#14: "undefined" !== undefined');
+}
diff --git a/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T5.js b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T5.js
new file mode 100644
index 000000000..b8be977d9
--- /dev/null
+++ b/external/contributions/Google/sputniktests/tests/Conformance/11_Expressions/11.9_Equality_Operators/11.9.5_The_Strict_Does_not_equals_Operator/S11.9.5_A8_T5.js
@@ -0,0 +1,27 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * @name: S11.9.5_A8_T5;
+ * @section: 11.9.5, 11.9.6;
+ * @assertion: If Type(x) is different from Type(y), return true;
+ * @description: Checking such x and y that either x or y is primitive string and the other is primitive number;
+*/
+
+//CHECK#1
+try {
+ throw 1;
+} catch(e) {
+ if (!(e !== "1")) {
+ $ERROR('#1: throw 1 !== "1"');
+ }
+}
+
+//CHECK#2
+try {
+ throw "1";
+} catch(e) {
+ if (!(1 !== e)) {
+ $ERROR('#2: 1 !== throw "1"');
+ }
+}